2011-08-07 59 views
3

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

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

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

回答

5

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

  1. 选择项目参考节点在Solution Explorer“MyExtension.UI”并查看属性(F4)
  2. 更改为“包含在VSIX输出组”的价值以下内容:BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup
+0

工程就像一个魅力,谢谢! –

+0

@Aaron Marten在VS 2012中,如果您尝试将带有资源的引用程序集添加到您的VSIX解决方案中,这仍然是一个“bug”。错误是:Microsoft.VsSDK.targets(118,5):错误:无法确定在'resource.txt'大会的全名 – codingadventures

+0

有一件事值得一提,在这里,似乎必须做一个完整的干净和重建每次你想重新安装调试,否则它会有点疯狂... ... - –

0

@JohnField - 我遇到了同样的错误 - “无法确定大会‘...’的全名” - 并希望在这里列出的修复,万一别人遇到同样的问题。

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

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

相关问题