Asp.net Visual Studio 2012 Web Publish不';不要复制文件

Asp.net Visual Studio 2012 Web Publish不';不要复制文件,asp.net,asp.net-mvc,visual-studio-2012,msbuild-wpp,visual-studio-publish,Asp.net,Asp.net Mvc,Visual Studio 2012,Msbuild Wpp,Visual Studio Publish,我在VS 2012中有一个Web应用程序项目,当我使用Web发布工具时,它会成功构建,但不会将任何文件复制到发布目标(本例中为文件系统) 如果我查看构建输出,我可以看到所有内容都被正确地复制到obj\Release\Package\PackageTmp\中,但是在构建输出中我看到的是: 4> 已完成构建项目“{project}.csproj”。 4> 正在删除现有文件… 4> 发布文件夹/… 4> ==========生成:3个成功,0个失败,1个最新,0个已跳过======== =======

我在VS 2012中有一个Web应用程序项目,当我使用Web发布工具时,它会成功构建,但不会将任何文件复制到发布目标(本例中为文件系统)

如果我查看构建输出,我可以看到所有内容都被正确地复制到obj\Release\Package\PackageTmp\中,但是在构建输出中我看到的是:

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

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

我在多个项目中都看到了这一点,有时似乎解决方案/平台配置导致了这一问题,但我还没有找到确切的原因

有没有其他人看到过这种情况,或者对如何正确工作有什么想法

更新:

我可能已经找到了解决办法。我只是让这种情况再次发生,我正在混乱的发布设置。一旦我将“设置”选项卡上的所选配置更改为另一个配置,然后返回到我想要使用的配置,我的所有文件都开始重新发布。希望这在将来的其他项目中也能起作用

更新2:

我在MicrosoftConnect上发布了一个bug,并收到了VSWebDeveloper团队一名开发人员的回复。他说,他们已经在内部版本中解决了这个问题,并将很快发布发布工具的更新来解决这个问题

更新3:


最近,Visual Studio 2012更新2解决了这个问题。在检查发布输出、事件日志、打开并检查Visual Studio日志等之后,我在VS 2010上遇到了相同的问题,然后决定删除web发布(通过添加/删除),我相信它最近已更新到v1.0.30810.0。这就解决了问题。

我在几个项目中遇到过同样的问题。唯一受欢迎的似乎是网络项目。删除并重新创建配置文件只能解决一次问题。此外,比较生成的publishxml不会产生任何差异,因此它似乎与概要文件没有任何关系


OP提到的来回更改构建问题的解决方案似乎是目前唯一可靠的解决方案

同样的问题。解决方法是将发布设置从Release更改为Debug。重新发布,然后更改回发布…

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

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

以下是引导我找到答案的线索:

上述对话中对我有帮助的相关回应是:

微软于2012年6月13日下午12:00发布嗨,安德鲁

这是我们如何处理解决方案配置与 项目配置。我们错误地认为他们将是 相同(例如,解决方案的版本| x86将每个项目设置为 发行版(以及x86),这导致我们使用了错误的版本 用于发布文件的属性

解决方法是进行解决方案配置和构建 配置匹配。此问题将在的下一版本中修复 Visual Studio 2012

谢谢, -Jimmy Lewis SDET,可视化Web开发团队


让我们更进一步。创建发布配置文件时会创建两个文件

  • 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>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

创建新概要文件时,它会创建如下所示的xml:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

释放
任何CPU

如果您使用
节点并将其放入
.pubxml.user
文件,您的PublishProfiles将重新开始工作。

我遇到了相同的错误,我将设置从release更改为debug,问题得到解决

VS 2012 Pro的磁盘发布目标也存在同样的问题。Project用于正确发布,但开始执行此问题时,未能将文件复制到目标文件夹


解决方案是编辑发布配置文件,将模式从Release(任意CPU)更改为debug,然后再更改为Release(任意CPU)。这样做会导致PublishProfiles\projname.pubxml.user文件被重写(如上所述)。看起来它在propertygroup节点下添加了LastUsedBuild、LastUsedPlatform和TimeStampOfAssociatedLegacyPublishXmlFile元素。发布完成后,它会添加另一个包含单个文件和发布时间的项目组。

这里我们遇到了相同的问题


我们只需将“发布方法:”从“文件系统”更改为例如“Web部署”,然后立即将其更改回“文件系统”。

我有一个Web应用程序,该解决方案中有几个其他引用的项目。过去,我多次使用单个发布配置成功部署。我将项目配置从Debug更改为Release,用于一个在过去丢失的项目。下一次我尝试部署时
function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir\$_"
    $to = split-path -parent "$deploy_dir\$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}
<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" />
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace
Build > Publish > Profile > New