2011-08-07 101 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」的實際上是用於模板嚮導。

相關問題