VSIX包不包含所引用程序集的本地化资源

4
我正在创建一个 VS2010 扩展(我们称之为 MyExtension)。该扩展的 UI 部分位于另一个程序集中 (MyExtension.UI),而扩展项目中仅包含一个模板代码,以便从菜单命令中调用 UI。 MyExtension.UI 包含本地化资源 (如 fr\MyExtensions.UI.resources.dll),但 VSIX 包不包括这些资源(尽管它们存在于 bin\Debug 目录中)。
我该如何告诉 VS 将这些资源包括在 VSIX 包中?我查看了 .vsixmanifest 设计器,但找不到对应的选项...
2个回答

5

这实际上是一个问题,在未来的版本中会得到解决。幸运的是,有一个简单的解决方法:

  1. 在解决方案资源管理器中选择“我的扩展.UI”项目引用节点并查看属性(F4)。
  2. 将“输出组包含在VSIX中”的值更改为以下内容:BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup

@Aaron Marten,如果您尝试将带有资源的引用程序集添加到VSIX解决方案中,则此问题在vs 2012中仍然是一个“错误”。错误信息为:Microsoft.VsSDK.targets(118,5): error : Could not determine the Full Name of the Assembly at 'resource.txt'。 - codingadventures
这里值得一提的是,似乎每次想要重新安装进行调试时,必须进行完全清理和重建,否则会出现一些问题... - Sarel Esterhuizen
这只适用于“项目”引用吗?它只在VS2010中工作吗?我的扩展名只使用DLL和NuGet引用,但我在属性窗口(VS2019,.NET 4.7.2 VSIX)中没有看到“包含在VSIX中的输出组”。另外,一个关键包(Microsoft.CodeAnalysis.CSharp.Scripting)的一些依赖项包括在VSIX中,而其他一些则神秘地被省略了...而且没有任何资源集成。 - Qwertie

0

@JohnField - 我遇到了同样的错误 - "无法确定'...'程序集的完整名称" - 并希望在此列出修复方法,以防其他人遇到相同的问题。

我的问题是我既有对被引用程序集的ProjectReference,又在我的.vsixmanifest文件中将该程序集列为资产。当您向被引用程序集添加“复制到输出目录”项时,VS SDK会感到困惑,因为它认为您添加的Assembly Asset仅适用于Assembly。它看到额外的CopyToOutputDirectory项,并认为它是一个程序集并尝试加载它。

解决方法是从.vsixmanifest中删除程序集作为资产。这是不必要的,因为项目已经被引用,其中包括结果.vsix中的程序集。实际上,糟糕命名的AssetType“Microsoft.VisualStudio.Assembly”实际上是用于模板向导。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接