我前几天安装了Visual Studio 2010 SP1,现在当我尝试“发布”我的应用程序时,我的所有项目都出现了此错误。
The target "_CopyBinDeployableAssemblies" does not exist in the project.
我不知道这里有什么问题,而且我对所有强大的谷歌一无所知,这让我有点紧张。
有人能指出我在这里的正确方向,或者其他人有同样的问题吗?因为它发生在我的所有项目中,所以我对这个问题感到非常惊讶。
这些站点是ASP.NET Web应用程序,其中一些是混合Web表单/ MVC,但其中一个只是Webforms。 1个站点超级简单,几乎没有引用,我仍然得到错误。
答案 0 :(得分:46)
安装Visual Studio 2010 SP1 Beta后,我也遇到了这个问题。
缺少的目标_CopyBinDeployableAssemblies
定义于:
$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
我通过向损坏的项目文件添加<Import>
元素来解决问题。
因此,如果您对上述目标有所了解,可以通过在项目文件中查找以下<Import>
来找到它们:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
您还需要导入:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
答案 1 :(得分:4)
从joao-angelo的blog post,将以下内容添加到项目文件(.csproj / .vbproj)
<Target Name="Noop"></Target>
<PropertyGroup>
<CollectFilesFrom_binDeployableAssembliesDependsOn>
Noop
</CollectFilesFrom_binDeployableAssembliesDependsOn>
</PropertyGroup>
导入前
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
使用ClickOnce
VS2010 SP1
上使用{{1}}对我有用
答案 2 :(得分:3)
Hoho,Jacob是对的!
当我们安装VS 2010 SP1时,默认的MSBuild路径将聚焦到文件夹
[C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0]
不是
[C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0]。
[Microsoft.WebApplication.targets]文件的构建目标名为[_CopyBinDeployableAssemblies]。
所以我们只需将[_CopyBinDeployableAssemblies]目标添加到我们的项目文件中(可以用记事本打开它:)) ,问题解决了
Ex:<Target Name="_CopyBinDeployableAssemblies"></Target>
。只需要一个空目标:)
答案 3 :(得分:1)
Ragge上面给出的答案就是我所需要的。但在我的情况下,我只添加了第二行。 Ragge给出的第一行已经在项目文件中了。
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
答案 4 :(得分:1)
它是VS 2013 SP 3,我还有这个问题! 为了解决这个问题,我不得不在以下方面更改以下行:
<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />
到以下行:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
答案 5 :(得分:0)
嗯,今天花了4小时,现在我解决了。但不幸的是,我没有明确的答案是什么问题。我会描述我的所作所为。
而且,我根本不会责怪MS。我知道它在哪里测试,但我之前从未遇到过这样的问题。
希望这可以解决其他人的问题。
答案 6 :(得分:0)
Ragge给我们的答案也是如此。我有一个解决方案,我从SP1安装后没有打开,只是拒绝构建具有相同的错误。在记事本中编辑项目文件以包含这两个语句和中提琴!问题解决了。非常感谢您的勤奋!
补充:一位同事提到添加导入会导致Visual Studio外部发生的构建可能会抱怨(命令行msbuild,构建服务器),因为那里不存在Microsoft.WebApplication.targets。所以我们将导入行改为:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="$(BuildingInsideVisualStudio) == true AND exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets')" />
这些条件对我们的构建很重要,因为我们使用构建服务器和msdeploy进行部署。
答案 7 :(得分:0)
取消部署项目并在<Import>
<Target Name="_CopyBinDeployableAssemblies"
Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
<CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*"
Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')"
Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*">
<Output ItemName="_binDeployableAssemblies" TaskParameter="Include" />
</CreateItem>
<Copy SourceFiles="@(_binDeployableAssemblies)"
DestinationFolder="$(OutDir)\%(RecursiveDir)" SkipUnchangedFiles="true"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>