我最近安装了适用于Visual Studio 2010 Service Pack 1的新Azure开发工具。每次尝试发布现有网站(使用文件系统部署)时,都会出现以下错误:
项目中不存在目标“ GatherAllFilesToPublish”。
谁能告诉我我想念的东西吗?
谢谢
Answers:
我想我知道问题所在。当您安装Azure SDK位时,它会安装一些VS Web Publish更新。其中之一更新文件位于
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
根据该文件的定义方式(如果该文件具有更新的时间戳)(无论出于何种原因),则在安装新组件时该文件不会更新。
要解决此问题,您应该可以按照以下步骤操作:
Microsoft.WebApplication.targets
为Microsoft.WebApplication.targets.bak
我遇到了这个问题,并通过添加以下内容进行修复:
<Target Name="GatherAllFilesToPublish">
</Target>
到项目文件。
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
在行上方添加以下内容。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
保存并重新加载项目。
删除这些安装为我解决了这个问题:
我想将我的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" />
Conditon="false"
。在开始工作之前,我还必须清理并重建项目。
我在一个古老的问题中意识到了这一点,但是最近我遇到了它,这就是我如何解决它。
背景:我有一个旧项目,我已升级到VS Studio13。看来该项目文件没有正确升级。
在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)' != ''" />
现在,我发布到文件系统的工作正常了!
VS2017同样的问题。您可以尝试一下,它对我有用。
搜索关键字“ WebApplication.targets”
<Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
注释或删除此行。(可能是两行,具体取决于“条件”)
在此步骤中,它将提示您安装大约500M的软件包。
之后,重新加载项目,然后就可以了!
我猜我在安装VS 2017时只是想念一些组件。
我也注意到VS2017中的MSBuild路径有很大不同,但是也许与csproj文件中使用相对路径的问题无关。
我一直在为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中遇到相同的问题,我发现的解决方案是通过创建一个新的空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" />
对于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>
我遇到了同样的问题:我在中创建了项目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" />
**重新加载项目并发布。
像魅力一样工作。
如果在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" />
由于无法从我这一角度复制问题,因此我建议您尝试重新安装SDK。
在安装新的SDK之前,请尝试将其完全删除。
最好的祝福,
徐明
我已解决的同一问题。请检查解决方案中是否缺少某些文件。如果您遇到错误,Error - The target "GatherAllFilesToPublish" does not exist in the project.
则只需打开.proj文件并删除此行<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
您收到实际错误或那些丢失的文件进入解决方案