缺少" BuiltProjectOutputGroupDependencies"构建VSIX取决于新的简化csproj

时间:2017-01-24 15:35:49

标签: msbuild vsix csproj visual-studio-2017

我有一个标准的VSIX项目,它在同一个解决方案中对类库项目进行项目依赖。在将类库转换为新的VS2017RC简化版csproj之前,一切正常。类库构建正常(我的dotnet SDK是1.0.0-preview4-004233),但在尝试构建VSIX时我得到:

error MSB4057: The target "BuiltProjectOutputGroupDependencies" does not exist in the project.

这显然与传统的VSIX csproj不兼容,期望新csproj无法提供的依赖项目。

有没有人碰到这个或有任何关于解决它的建议?我将研究删除项目引用并手动引用输出DLL。

作为一个相关的附注,它不清楚VSIX将从类库中选择哪个输出DLL,因为新的csproj支持多个目标框架。

2 个答案:

答案 0 :(得分:7)

如上所述on the GitHub issue,这是一个解决方法:

  1. 卸载VSIX项目。
  2. 右键单击并编辑其.csproj文件。
  3. 找到导致问题的项目的<ProjectReference>
  4. 使用您在引用项目中定位的正确.NET Framework版本添加元素<AdditionalProperties>TargetFramework=net452</AdditionalProperties>
  5. 重新加载并重建VSIX proejct。

答案 1 :(得分:0)

我相信您可能会遇到与我尝试从针对多个框架的.NET标准库引用我的Visual Studio扩展时遇到的相同问题。关于它有一个GitHub问题dotnet/sdk#433

我要做的就是删除我的其他目标。就我而言,我有:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>netstandard1.3;net46</TargetFrameworks>
    </PropertyGroup>    
    ...
</Project>

我必须将其修改为仅针对netstandard1.3(因为它根据.NET Standard chart与.NET 4.6兼容)并且我的VSIX以.NET 4.6为目标。

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard1.3</TargetFramework>
    </PropertyGroup>  
    ...
</Project>