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

时间:2012-06-12 00:09:07

标签: azure visual-studio-2010-sp1

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

  

目标" GatherAllFilesToPublish"在项目中不存在。

有谁能告诉我我错过了什么?

由于

18 个答案:

答案 0 :(得分:82)

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

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

要解决此问题,您应该可以按照以下步骤操作:

你可以尝试一下,让我知道它是否有效?

答案 1 :(得分:55)

我遇到了这个问题,并通过添加:

来修复
<Target Name="GatherAllFilesToPublish">
</Target>

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

答案 2 :(得分:44)

这对我有用fix - gather all files to publish error

  1. 右键单击该项目,然后选择编辑(项目名称).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. 保存并重新加载项目。

答案 3 :(得分:9)

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

  • Microsoft Web Publish - Visual Web Developer Express 2010
  • Microsoft Web Publish - Visual Studio 2010

Reference

答案 4 :(得分:5)

当我想将ASP.Net应用程序发布到Windows Azure时,我遇到了类似的问题。经过多次试验和错误后,最终this解决方案为我工作。这不需要任何文件重命名或任何安装/重新安装修补程序/补丁。这是你要做的:

在Wordpad / Notepad中打开ASP.Net项目文件(.csproj),找到与此类似的行:

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

将其替换为下面给出的行:

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

答案 5 :(得分:3)

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

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

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

原始文件的日期是2011年1月18日,在用.bak扩展名重命名后重新安装KB2591016,发布似乎再次正常工作。 Microsoft.WebApplication.targets文件的新日期现在是2011年8月11日。

答案 6 :(得分:3)

我一直在努力解决Visual Studio 2013(和2015)的相同问题。

对我来说,关键的解决方法是添加VSToolsPath属性设置,无论出于何种原因,该属性设置都会在我的项目文件中丢失。

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

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

作为旁注:我的项目文件也引用了Microsoft.WebApplication.targets文件的v10.0版本,但这似乎没问题。

答案 7 :(得分:2)

我有同样的错误。不知怎的,这条线丢失了。

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

下面添加了它
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

现在正常工作

答案 8 :(得分:2)

我在VS 2017中遇到了这个问题,我尝试按照此处的建议手动更改csproj文件,但没有建议的修复程序对我有用。我遇到了这个nuget包。安装它对我有用。

MSBuild.Microsoft.VisualStudio.Web.targets

答案 9 :(得分:2)

VS2017有相同问题。您可以尝试一下,它对我有用。

  1. 卸载项目并编辑csproj文件
  2. 搜索关键字“ WebApplication.targets”

     <Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
    

    评论或删除此行。(可能是两行,具体取决于“条件”)

  3. 保存并重新加载项目

在此步骤中,它将提示您安装大约500M的软件包...

然后,重新加载项目,然后就可以了!

我想我在安装VS 2017时会错过一些组件。

我还注意到VS2017中的MSBuild路径完全不同,但这可能与csproj文件中使用相对路径的问题无关。

答案 10 :(得分:2)

对于Visual Studio 2017 - 应该在.csproj文件中的块之后添加,使用记事本并查找&#34; .targets&#34;找到它......

我创建了一个新的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>

答案 11 :(得分:2)

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

 13.0  $(MSBuildExtensionsPath32)\微软\ VisualStudio的\ V $(VisualStudioVersion) 保存并重新加载项目。

这真的对我有用,谢谢

答案 12 :(得分:2)

我在VS2013中遇到了同样的问题,我找到的解决方案是通过创建一个新的空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" />

答案 13 :(得分:1)

如果在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" />

答案 14 :(得分:1)

Sayed的解决方案在我使用VS2012升级的项目中无效。但是this工作了

答案 15 :(得分:0)

由于该问题无法在我身边重现,我建议您尝试重新安装SDK。

请在安装新SDK之前尝试完全删除旧SDK。

最诚挚的问候,

徐明。

答案 16 :(得分:0)

我已修复同样的问题。 请检查解决方案中是否缺少某些文件。如果您遇到Error - The target "GatherAllFilesToPublish" does not exist in the project.之类的错误,请打开.proj文件并删除此行<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

您将实际错误或丢失的文件存入解决方案

答案 17 :(得分:0)

我遇到了同样的问题:我在VS 2010中创建了项目,并且不得不从VS 2019发布。这里没有任何解决方案对我有用,并且我已经解决了大约一天的问题。

工作原理来自以下链接:http://www.dotnetxp.com/visual-studio-error-publish-target-gatherallfilestopublish-not-exist-project/

这就是我所做的:

**已卸载违规项目。

**在文本编辑器中打开csproj文件。

**查找此行

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

并替换为此。我使用16.0,因为那是我使用的版本(vs2019)。

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">16.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\v16.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

**重新加载项目并发布。

像魅力一样工作。