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

我最近为 VisualStudio2010服务包1安装了新的 Azure 开发工具。每次我尝试发布一个现有的网站(使用文件系统部署) ,我得到以下错误:

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

有人能告诉我我错过了什么吗?

谢谢

49728 次浏览

由于这个问题不能在我这边复制,我想建议您尝试重新安装 SDK。

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

最好的问候,

明旭。

我想我知道问题出在哪了。当您安装 Azure SDK 位时,它会安装一些 VS Web 发布更新。其中一个更新文件

C:\Program Files (x86)\MSBuild\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 文件的新日期。目标是2011年8月11日。

移除这些设备为我解决了问题:

  • MicrosoftWeb 发布-VisualWebDeveloperExpress2010
  • MicrosoftWeb 发布 -VisualStudio2010

参考文献

Sayed 的解决方案在我使用 VS2012升级的项目中不起作用,但是 这个起作用了

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

打开 Wordpad/记事本中的 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" />

我遇到了这个问题,通过加入以下内容得到了解决:

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

项目档案。

这招对我很管用

  1. 右键单击项目并选择 Edit (project name) . 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. Save and Reload project.

如果在 VS2012(Visual Studio 2012)中编辑 VS2010项目,请尝试这样做:

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

然后换成:

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

我也犯了同样的错误,不知怎么的,这条线不见了。

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

在下面添加了它

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

现在没问题了

我在 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" />

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

背景: 我有一个旧项目,我升级到 VS 工作室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)' != ''" />

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

我在 VisualStudio2013(和2015)中也遇到过同样的问题。

对我来说,最关键的修复方法是添加 VSToolsPath属性设置,不管出于什么原因,这个设置在我的项目文件中丢失了。

我在 <PropertyGroup>指令中加入了以下内容:

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

顺便说一句: 我的项目文件也引用了 Microsoft.WebApplication.targets文件的 v10.0版本,不过这似乎没什么问题。

右键单击项目并选择 Edit (project name) . csproj 寻找 在行上添加以下内容。

13.0 $(MSBuildExtensionsPath32) MicrosoftVisualStudio v $(VisualStudioVersion) 保存和重新加载项目。

这对我真的有用,谢谢

对于 VisualStudio2017-应该在。Csproj 文件,使用记事本,并寻找”。来定位它。

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

和我解决的问题一样。 请检查一些文件是否丢失到解决方案。如果你遇到像 Error - The target "GatherAllFilesToPublish" does not exist in the project.这样的错误,那就打开。Proj 文件并删除此行 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

你得到实际的错误或那些丢失的文件到解决方案

VS2017也有同样的问题,你可以试试这个,对我很有效。

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

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

    注释或删除这一行(根据“条件”可能有两行)

  3. 保存和重新加载项目

在这一步,它会提示您安装一些软件包约500M..。

之后,重新加载项目,然后它的工作!

我想我只是在安装 VS2017时遗漏了一些组件。

Also I notice the MSBuild Path is quite different in VS2017, but maybe that's not related to the problem cuz it uses relative path in the csproj file..

我在 VS 2017中遇到了这个问题,我试着手动修改 csproj 文件,正如这里建议的那样,没有一个建议的修复对我有用。我偶然发现了这个宝贝。安装它对我来说很管用。

MSBuild. Microsoft. VisualStudio. Web.target

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

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

非常有效。