Visual Studio 2012 Web发布不复制文件
我在VS 2012中有一个Web应用程序项目,当我使用Web发布工具时,它会成功构建,但不会将任何文件复制到发布目标(本例中为文件系统)。
如果我查看构建输出,我可以看到所有东西都正确地复制到obj Release Package PackageTmp 中,但是我在构建输出中看到的所有内容都是这样的:
4>完成建筑项目“{Project} .csproj”。
4>删除现有文件...
4>发布文件夹/ ...
4> ==========构建:3成功,0失败,1最新,0跳过==========
==========发布:1次成功,0次失败,0次跳过==========
尽管它表示发布成功,但发布目标目录中没有文件。
我在多个项目中看到过这种情况,有时看起来解决方案/平台配置会导致这个问题,但我一直无法找到确切的原因。
有没有其他人看到这种情况发生,或者有关于如何正确工作的想法?
更新:
我可能找到了解决方法。 我只是再次发生这种情况,我正在搞乱发布设置。 一旦我将“设置”选项卡上的选定配置更改为另一个配置,然后返回到我想要使用的所有文件,即可重新开始发布。 希望这在未来的其他项目上有效。
更新2:
我在Microsoft Connect上发布了一个错误,并从VS Web Developer团队的开发人员那里听到了这个错误。 他表示,他们已经在内部版本中解决了这个问题,并且很快就会发布更新发布工具,以解决这个问题。
更新3:
Visual Studio 2012 Update 2最近修复了这个问题
这可能是由vs2012的RC创建的解决方案/项目造成的。 这发生在几个月前,并通过确保我的解决方案构建配置与我的项目配置相匹配来解决问题。
我刚刚在使用VS2012 Express for Web打开最初在vs2012RC中创建的相同解决方案时遇到了同样的问题。 我完成了原来的海报建议,并解决了我的问题。
这是让我回答的线索:
connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails
以上对话帮助我的相关回应是:
发布者微软于2012年6月13日在下午12:00嗨安德鲁,
这是我们处理解决方案配置与项目配置的一个错误。 我们错误地认为它们是相同的(例如Solution's Release | x86将每个项目都设置为Release | x86),这导致我们使用错误的构建属性来发布文件。
解决方法是使解决方案配置和构建配置匹配。 此问题将在Visual Studio 2012的下一个版本中修复。
谢谢, - Jimmy Lewis SDET,Visual Web Developer团队
同样的问题。 解决方法是将发布设置从发布更改为调试。 重新发布,然后更改回发布...
要更深入一点。 创建发布配置文件时会创建两个文件。
NewProfile.pubxml
NewProfile.pubxml.user
当您从源代码管理打开PublishProfile文件夹中的这些文件的项目时,它只包含.pubxml
文件而不包含.publxml.user
文件,因此它会在您打开项目时即时创建.publxml.user
文件。 当它在运行中创建新的.publxml.user
时,xml看起来像:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
当你创建一个新的配置文件时,它会创建如下所示的xml:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<TimeStampOfAssociatedLegacyPublishXmlFile />
<EncryptedPassword />
</PropertyGroup>
</Project>
如果您将<PropertyGroup>
节点放入.pubxml.user
文件中,则您的PublishProfiles将再次开始工作。