项目中不存在目标“_CopyBinDeployableAssemblies”

时间:2011-01-13 14:40:49

标签: visual-studio visual-studio-2010 deployment visual-studio-2010-sp1

我前几天安装了Visual Studio 2010 SP1,现在当我尝试“发布”我的应用程序时,我的所有项目都出现了此错误。

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

我不知道这里有什么问题,而且我对所有强大的谷歌一无所知,这让我有点紧张。

有人能指出我在这里的正确方向,或者其他人有同样的问题吗?因为它发生在我的所有项目中,所以我对这个问题感到非常惊讶。

这些站点是ASP.NET Web应用程序,其中一些是混合Web表单/ MVC,但其中一个只是Webforms。 1个站点超级简单,几乎没有引用,我仍然得到错误。

8 个答案:

答案 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-angeloblog 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小时,现在我解决了。但不幸的是,我没有明确的答案是什么问题。我会描述我的所作所为。

  1. 卸载SP 1并遇到一些错误。这些因为我没有VS安装媒体而且它要求它。
  2. SP1似乎已被删除但我仍然收到错误。
  3. 下载VS Ultimate Trial并试图修复,没有帮助。
  4. 再次下载VS 2010 SP1并安装它。还是一样的问题。
  5. 卸载了VS SP1,可以访问VS Ultimate安装媒体,我只有一个错误,它需要一些VS Express的东西,我在那个上按下取消,它说卸载失败了。
  6. 启动Visual Studio并解决问题!哈利路亚!
  7. 而且,我根本不会责怪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>