TFS构建服务器和COM引用 - 这是否有效?

Enr*_*ico 5 com tfs reference build

在我的开发者PC上,我已经注册了相应的dll并引用了它们.(添加引用 - > COM)在TFS构建服务器上,这当然会导致错误,因为引用没有在那里注册,也不会在将来发生.

绕过这个的最好方法是什么?

Dav*_*ton 10

不需要直接使用tlbimp.exe.尝试替换<COMReference>项目文件中的任何项目<COMFileReference>.一个例子看起来像这样:

<ItemGroup>
   <COMFileReference Include="MyComLibrary.dll">
     <EmbedInteropTypes>True</EmbedInteropTypes>
   </COMFileReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

COM dll无需在机器上注册即可使用.

每个COMFileReference项也可以有一个WrapperTool属性,但默认似乎工作正常.EmbedInteropTypes属性未记录为适用于COMFileReference,但它似乎按预期工作.

有关详细信息,请参阅https://docs.microsoft.com/en-ca/visualstudio/msbuild/common-msbuild-project-items#comfilereference.从.NET 3.5开始,此MSBuild项目已可用.


Enr*_*ico 3

好吧,答案比人们想象的要简单。只需使用“tlbimp.exe”创建一个相应的 intrerop.dll,将其包含在项目中并引用此 dll 而不是 COM 对象。

使用 tlbimp.exe 可以节省时间,因为当您引用 COM 对象时,Visual Studio 会自动创建此 dll。但它不会将其上传到 TFS。所以最后我只使用了自动创建的 dll,TFS 构建服务器很高兴。

人们可以在“ProjectFolder\obj\x86\Development”中找到自动创建的 Interop dll