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

时间:2011-08-07 16:55:55

标签: visual-studio-2010 localization vsix vs-extensibility

我正在创建一个VS2010扩展(我们称之为MyExtension)。此扩展的UI位于不同的程序集(MyExtension.UI)中,扩展项目仅包含用于从菜单命令调用UI的样板代码。

MyExtension.UI包含本地化资源(例如fr\MyExtensions.UI.resources.dll),但VSIX包不包含这些资源(尽管它们存在于bin \ Debug目录中)。

我如何告诉VS将这些资源包含在VSIX包中?我查看了.vsixmanifest设计师,但我找不到合适的选项......

2 个答案:

答案 0 :(得分:5)

这实际上是一个将在未来版本中解决的错误。幸运的是,有一个简单的解决方法:

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

答案 1 :(得分:0)

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

我的问题是我有一个引用程序集的ProjectReference,我在我的.vsixmanifest文件中将程序集列为资产。当您添加'复制到输出目录'项目到引用的程序集,VS SDK会混淆,因为它认为您添加的程序集资产仅适用于程序集。它会看到额外的CopyToOutputDirectory项,并认为它是一个程序集并尝试加载它。

解决方法是在.vsixmanifest中删除Assembly作为资产。这不是必需的,因为项目已被引用,其中包括生成的.vsix中的程序集。实际上,名称不好的AssetType“Microsoft.VisualStudio.Assembly”实际上是用于模板向导。