我最近为Visual Studio 2010 Service Pack 1安装了新的Azure开发工具。每当我尝试发布现有网站时(使用文件系统部署),我都会收到以下错误:
目标" GatherAllFilesToPublish"在项目中不存在。
有谁能告诉我我错过了什么?
由于
答案 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
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
在行上方添加以下内容。
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
保存并重新加载项目。
答案 3 :(得分:9)
删除这些安装解决了我的问题:
答案 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包。安装它对我有用。
答案 9 :(得分:2)
VS2017有相同问题。您可以尝试一下,它对我有用。
搜索关键字“ WebApplication.targets”
<Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
评论或删除此行。(可能是两行,具体取决于“条件”)
在此步骤中,它将提示您安装大约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
发布。这里没有任何解决方案对我有用,并且我已经解决了大约一天的问题。
这就是我所做的:
**已卸载违规项目。
**在文本编辑器中打开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" />
**重新加载项目并发布。
像魅力一样工作。