我在VS 2012中有一个Web应用程序项目,当我使用Web发布工具时,它成功地构建了,但没有将任何文件复制到发布目标(在这种情况下是文件系统)。

如果我看构建输出,我可以看到一切都被复制到obj\Release\Package\PackageTmp\正确,但然后我在构建输出中看到的是这样的:

4>完成建设项目“{project}.csproj”。 4>删除现有文件… 4>发布文件夹/… 4 > ========== 构建:3成功了,0失败,1最新的,0跳过 ========== ========== 发布:1成功,失败,0跳过 ==========

即使它说发布成功,但目标目录中没有用于发布的文件。

我在多个项目中看到过这种情况,有时似乎是解决方案/平台配置导致了这个问题,但我还不能确定造成这个问题的确切原因。

有人见过这种情况吗?或者有人知道如何让它正确工作吗?

更新:

我可能找到了一个变通办法。这又发生了,我把发布设置弄乱了。一旦我改变了设置选项卡上选择的配置到另一个配置,然后回到我想要使用的所有文件再次开始发布。希望这在未来的其他项目中也适用。

更新2:

我在Microsoft Connect上发布了一个bug,并从VS Web developer团队的开发人员那里得到了回复。他说他们已经在内部版本中修复了这个问题,并将很快发布发布工具的更新来修复这个问题。

更新3:

最近Visual Studio 2012 Update 2修复了这个问题


当前回答

这是因为.pubxml. xml。User包含发布所需的信息,该文件没有(也不应该)包含在源代码控制中。要修复这个VS错误,请从.pubxml. xml文件中复制信息。用户文件到.pubxml文件。相关属性为:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

把它们放到.pubxml中,就可以开始了。

其他回答

我在Visual Studio生成的服务参考文件在整体路径长度方面变得太长时遇到过这种情况。

通过使用svcutil.exe重新生成服务引用来缩短它们,删除所有原始的服务引用文件。

Svcutil可以这样调用:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

我的。命名空间应该替换为生成的服务代理中的现有命名空间(通常在Reference.cs文件中找到),以避免编译错误。

http://myservice应该替换为服务端点url。

以上的方法对我来说都没用。

但我注意到我们的五个ASP。NET MVC项目在我们的主要解决方案中,其中四个将部署包放在正确的位置,而一个将它留在obj\Debug下。

我比较了这些项目,发现了不一致之处。解决办法是改变这一点:

<Import
    Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

:

<Import
  Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets"
  Condition="'$(VSToolsPath)' != ''" />
<Import
  Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"
  Condition="false" />

在我做了这个更改之后,所有五个项目都将它们的部署包放在了正确的位置。

(很抱歉排了这么长的队,但我找不到更好的方式来浓缩它们。)

我发现我可以通过改变目标位置从obj/[释放|阶段|..]到解决方案文件夹之外的新路径,例如c:\deployment。看起来VS 2012有点混乱,可能在发布过程中就放弃了。

Matt

我尝试了所有这些解决方案,但这是一个有效的每一次。

我们只需将“Publish method:”从“File System”更改为“Web Deploy”,然后立即将其更改为“File System”。

最简单的是,

   1. select the file(s) that are not being copied,
   2. Press <F4> to get the properties window
   3. Make the "Build Action" property "compile" or "content" depending on what it is.
   4. Now this particular file will be included!