在Visual Studio Community 2015 RC中编译VSIX项目的问题

时间:2015-07-07 19:29:20

标签: c# visual-studio msbuild visual-studio-2015 vsix

我正在尝试创建一个Visual Studio VSIX扩展,并且在使用3" Dependencies"进行编译时遇到了问题。这是同一解决方案中的C#类库:

  

错误MSB4057:目标" VSIXContainerProjectOutputGroup"在项目中不存在。

     

错误MSB4057:目标" VSIXContainerProjectOutputGroup"在项目中不存在。

     

错误MSB4057:目标" VSIXContainerProjectOutputGroup"在项目中不存在。

所有三个程序集都设置为"嵌入此VSIX"并且embed文件夹设置为" /&#34 ;;这是" source.extension.vsixmanifest"中的XML。文件:

<Dependencies>
    <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="4.6" d:InstallSource="Download" />
    <Dependency d:Source="Project" d:ProjectName="Networking" d:InstallSource="Embed" Version="0.5" Location="|Networking;VSIXContainerProjectOutputGroup|" DisplayName="|Networking;VSIXNameProjectOutputGroup|" Id="|Networking;VSIXIdentifierProjectOutputGroup|" d:VsixSubPath="/" />
    <Dependency d:Source="Project" d:ProjectName="Utilities" d:InstallSource="Embed" Location="|Utilities;VSIXContainerProjectOutputGroup|" DisplayName="|Utilities;VSIXNameProjectOutputGroup|" Id="|Utilities;VSIXIdentifierProjectOutputGroup|" d:VsixSubPath="/" />
    <Dependency d:Source="Project" d:ProjectName="Data Model" Version="1.0" d:InstallSource="Embed" d:VsixSubPath="/" Location="|Data Model;VSIXContainerProjectOutputGroup|" DisplayName="|Data Model;VSIXNameProjectOutputGroup|" Id="|Data Model;VSIXIdentifierProjectOutputGroup|" />
  </Dependencies>

此代码需要位于单独的程序集中,以便其他项目可以引用它。

我已经尝试了this MSDN论坛问题中提到的两个建议,但都没有效果。

还有另一个不太麻烦但可能相关的问题正在发生:每隔一段时间,这三个项目中的类和命名空间似乎都消失了,我必须删除并重新添加对它们的引用。

非常感谢任何解决这些问题的帮助;如果我能提供任何其他信息来帮助解决这些问题,请告诉我。

修改

我尝试在发布模式下重新编译,看看它是否是特定于配置的问题,但没有任何改变。

2 个答案:

答案 0 :(得分:4)

我设法通过删除为扩展项目的csproj文件中的项目引用指定OutputGroupsIncludedInVSIXOutputGroupsIncludedInVSIXLocal的行来修复它,并将库更改为&#34; Assets&# 34;而不是&#34;依赖&#34;在vsixmanifest文件中。

希望这可以帮助其他人解决同样的问题。

答案 1 :(得分:-1)

如果任何依赖项是VS2017中的多目标.NET核心框架库(即netstandard2.0;net462),则会出现此错误:

  

错误:c:\ path \ to \ depproj.csproj:错误MSB4057:项目中不存在目标“BuiltProjectOutputGroupDependencies”

添加:

<AdditionalProperties>TargetFramework=net462</AdditionalProperties>

将项目引用节点中的 .csproj 文件作为附加属性。

<ProjectReference Include="..\path\to\deprpoj.csproj">
    <Project>{81eab942-30aa-445e-86d6-ad6becdf804c}</Project>
       <Name>Your.Project.Name</Name>   
    <AdditionalProperties>TargetFramework=net462</AdditionalProperties>
</ProjectReference>