81

I have recently installed the new Azure development tools for Visual Studio 2010 service pack 1. Every time that I try to publish an existing website (using file system deployment) I get the following error:

The target "GatherAllFilesToPublish" does not exist in the project.

Can anyone tell me what I am missing?

Thanks

4

19 回答 19

83

我想我知道问题是什么。当您安装 Azure SDK 位时,它会安装一些 VS Web Publish 更新。其中之一将文件更新为

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

根据我们的设置是如何定义的,如果该文件具有更新的时间戳(无论出于何种原因),那么当您安装新组件时,该文件不会得到更新。

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

于 2012-06-22T21:28:29.483 回答
74

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

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

到项目文件。

于 2014-01-31T10:46:24.173 回答
45

这对我有用 - 收集所有文件以发布错误

  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. 保存并重新加载项目。

于 2014-02-26T22:49:44.203 回答
13

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

MSBuild.Microsoft.VisualStudio.Web.targets

于 2018-07-11T17:50:44.007 回答
9

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

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

参考

于 2012-07-03T19:34:45.047 回答
8

VS2017同样的问题。你可以试试这个,它对我有用。

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

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

    评论或删除这一行。(可能两行取决于“条件”)

  3. 保存并重新加载项目

在这一步,它会提示你安装一些大约 500M 的包...

之后,重新加载项目,然后它就可以工作了!

我想我只是在安装 VS 2017 时错过了一些组件。

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

于 2018-07-04T06:29:21.620 回答
5

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

在写字板/记事本中打开 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" />
于 2013-09-26T04:49:42.340 回答
4

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

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

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

所以我告诉 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)' != ''" />

现在我发布到文件系统的工作正常!

于 2015-09-10T08:30:47.643 回答
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 日。

于 2012-06-25T02:44:41.380 回答
3

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

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

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

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

附带说明:我的项目文件也引用了该Microsoft.WebApplication.targets文件的 v10.0 版本,但这似乎没问题。

于 2015-12-17T10:12:19.290 回答
2

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

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

在下面添加它

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

现在工作正常

于 2014-07-25T12:07:29.640 回答
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" />
于 2015-03-10T12:48:17.437 回答
2

对于 Visual Studio 2017 - 它应该添加到 .csproj 文件中的块之后,使用记事本并查找“.targets”来定位它...

我创建了一个新的 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>
于 2017-09-14T06:57:10.200 回答
2

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

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

这对我真的有用,谢谢

于 2015-12-23T11:11:29.573 回答
2

我遇到了同样的问题:我在 中创建了项目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" />

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

像魅力一样工作。

于 2019-12-17T13:43:44.940 回答
1

Sayed 的解决方案在我使用 VS2012 升级的项目中不起作用。但这有效_

于 2013-09-12T04:29:40.890 回答
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" />
于 2014-03-10T22:55:54.513 回答
0

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

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

此致,

明旭。

于 2012-06-12T11:06:03.783 回答
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" />

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

于 2018-03-01T15:54:40.527 回答