我在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修复了这个问题


当前回答

一个简单的解决方法是删除发布配置文件并创建一个新的配置文件。

当您右键单击解决方案并选择publish时,您就有了一个概要集。删除这个并创建一个新的。

这将解决问题。

从2010年切换到2012年,我就遇到了这个问题

其他回答

这可能是由vs2012的RC创建的解决方案/项目造成的。这在几个月前发生在我身上,通过确保我的解决方案构建配置与我的项目配置匹配来解决这个问题……

我最近在使用VS2012 Express for Web打开vs2012RC中最初创建的相同解决方案时遇到了同样的问题。我完全按照最初海报上的建议做了,它解决了我的问题。

下面是我找到答案的线索:

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

上述对话中对我有帮助的中肯回答是:

Posted by Microsoft on 6/13/2012 at 12:00 PM Hi Andrew, This was a bug in how we handle the solution configuration vs. the project configuration. We incorrectly assumed that they would be the same (e.g. Solution's Release|x86 would have each project set to Release|x86 as well), which caused us to use the wrong build properties for publishing files. The workaround is to make the solution configuration and build configuration match. This issue will be fixed in the next release of Visual Studio 2012. Thanks, - Jimmy Lewis SDET, Visual Web Developer team

我曾多次发布过这个网站。但有一天,当我修改了一些aspx文件,然后试图发布网站,结果是一个空的发布文件夹。

在我的变通中,我找到了一个解决方案。

发布向导将在发布时反映任何错误,但不会将任何文件复制到目标文件夹。 要找出产生错误的文件,只需将网站文件夹内容复制到一个新文件夹中,并用该网站启动visual studio。 现在,当你尝试发布时,它会给你一个包含错误的文件名。 只需纠正原始网站文件夹中的错误,并尝试发布,它将像之前一样工作。

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

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

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

检查你当前的项目,你是否做了相同的类名和不同的页面名(类名将继承复制的文件)。最终这将混淆编译器!!

代码文件=“合并.aspx.vb” 继承=“合并

更进一步说。在创建发布配置文件时,将创建两个文件。

NewProfile.pubxml NewProfile.pubxml.user

当您从源代码控制打开一个在PublishProfile文件夹中包含这些文件的项目时,它只有.pubxml文件,而没有. publicxml文件。用户文件,因此它创建了。publicxml。用户文件在运行时打开项目。 当它创建新的. publicxml . xml时。用户在飞行的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. xml文件中。用户文件你的PublishProfiles将重新开始工作。