为什么我得到错误“目标GatherAllFilesToPublish不存在”?

我最近安装了用于Visual Studio 2010 Service Pack 1的新的Azure开发工具。每次尝试发布现有网站(使用文件系统部署)时,都会出现以下错误:

项目中不存在目标“GatherAllFilesToPublish”。

谁能告诉我我失踪了什么?

谢谢

伙计们,我非常抱歉,你们遇到了这个问题。

我想我知道问题是什么。 当您安装Azure SDK位时,它将安装一些VS Web发布更新。 其中一个更新文件在C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets。 根据我们的设置如何定义,如果该文件有一个更新的时间戳(无论什么原因),那么当您安装新的组件文件不会得到更新。

要解决这个问题,你应该可以按照下面的步骤进行:

你可以试试看,让我知道如果它的工作与否?

我遇到了这个问题,并且通过添加以下内容来解决问题

<Target Name="GatherAllFilesToPublish"> </Target> 

到项目文件。 我仍然不知道发生了什么事情。

这对我工作修复 – 收集所有文件发布错误

  1. 右键单击该项目并select编辑(项目名称).csproj。 (例如,在记事本中编辑)
  2. 查找<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  3. 在行上添加以下内容。

     <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> 
  4. 保存并重新加载项目。

删除这些安装解决了我的问题:

  • Microsoft Web发布 – Visual Web Developer Express 2010
  • Microsoft Web Publish – Visual Studio 2010

参考

当我想将我的ASP.Net应用程序发布到Windows Azure时,我遇到了类似的问题。 经过多次反复试验, 这个解决scheme为我工作。 这不需要重命名文件或安装/重新安装修补程序/修补程序。 这是你必须做的:

在写字板/记事本中打开ASP.Net项目文件(.csproj),并find类似于这样的行:

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

用下面给出的行replace它:

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

我遇到了类似的问题,并使用Sayed提供的步骤解决了这个问题。

虽然我重命名的文件在v10.0目录中。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets.

原来的文件是在2011年1月18日,在用.bak扩展名重新命名后重新安装了KB2591016后,发布似乎又重新开始了。 文件Microsoft.WebApplication.targets的新date现在是2011年8月11日。

我在一个古老的问题中意识到这一点,但我最近遇到了这个问题,这就是我如何解决这个问题。

背景:我有一个旧的项目,我升级到VS studio 13.它看起来像项目文件没有正确升级。

在csproj文件中有VS v10.0的引用,但是我运行的是VS 13,它真的是“v12.0”。

所以我告诉csproj文件使用“v12.0”文件夹,而不是“v10.0”文件夹。

这是我的:

 <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 

这是我改变成的:

 <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 

现在我发布到文件系统的作品!

我一直在与Visual Studio 2013(和2015)的同样的问题挣扎。

对我来说,至关重要的一点是添加VSToolsPath属性设置,这是我的项目文件中不存在的,无论出于何种原因。

我将它添加到<PropertyGroup>指令中:

 <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 

作为一个方面说明:我的项目文件也引用了Microsoft.WebApplication.targets文件的v10.0版本,但似乎没关系。

我有同样的错误。 不知何故,这条线缺失。

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

在下面添加它

 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 

现在工作正常

我在VS2013有同样的问题,我find的解决scheme是通过创build一个新的空的Web应用程序项目可以从它复制到我的旧网站项目的以下几行:在顶部:

 <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 

Sayed的解决scheme在使用VS2012进行升级的项目中不起作用。 但是, 这工作

如果在VS2012(Visual Studio 2012)中编辑VS2010项目,试试这个。 编辑csproj文件来自:

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

并改为:

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

右键单击该项目并select编辑(项目名称).csproj。 (例如,在记事本中编辑)寻找在行上面添加以下内容。

13.0 $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v $(VisualStudioVersion)保存并重新加载项目。

这真的对我很有用,谢谢

由于这个问题不能在我身上复制,我想build议你尝试重新安装SDK。

在安装新的SDK之前,请尝试彻底删除旧的SDK。

最好的祝福,

许明

对于Visual Studio 2017 – 它应该添加在.csproj文件中的块之后,使用记事本并查找“.targets”以find它…

我创build了一个新的VS 2017项目,这是为我工作(没有任何警告):

  <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> </Target>