對於我原來的回答類似的問題,請參閱:TFS Build server and COM references - does this work?
編譯引用COM組件沒有被登記在構建服務器是COM組件.NET代碼的一個好辦法在項目/構建文件中使用COMFileReference
參考項而不是COMReference
。一個COMFileReference
項目看起來是這樣的:
<ItemGroup>
<COMFileReference Include="MyComLibrary.dll">
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMFileReference>
</ItemGroup>
由於Visual Studio提供了COMFileReference
沒有設計師的支持,你必須編輯項目/手工打造的文件。
在構建期間,MSBuild從COM DLL中提取類型庫信息,並創建一個interop程序集,該程序集可以是獨立的或嵌入調用的.NET程序集。
每個COMFileReference
項目也可以有一個WrapperTool
屬性,但默認情況下似乎對我來說很好。 EmbedInteropTypes
屬性沒有記錄爲適用於COMFileReference
,但它似乎按預期工作。
請參閱http://msdn.microsoft.com/en-us/library/bb629388.aspx瞭解更多細節。這個MSBuild項目自.NET 3.5起可用。
這是一個恥辱,沒有人似乎知道任何關於這種技術,這對我來說似乎比替代品簡單。這實際上並不令人意外,因爲我只能在網上找到上面提到的那個。我自己通過挖掘MSBuild的Microsoft.Common.targets文件發現了這種技術。
在.NET中COM通常是通過Interop完成的,以便在.NET中註冊.DLL,它們被稱爲程序集,可以通過多種方法完成......通過在項目級別通過VS IDE添加引用或編寫代碼並通過.Config文件卸載程序集,該文件具有對程序集的引用以及在該項目中對該引用的使用... GAC .. – MethodMan 2012-01-12 21:45:12
當您構建時,註冊是永遠不需要的。 COM使用類型庫來公開接口。如果你看到Regasm.exe被使用,那麼你做錯了。使用Tlbexp.exe – 2012-01-12 22:43:26