我正在尝试摆脱自己在解决方案中拥有的lib文件夹,将dll迁移到nuget,还从Packages.config切换到Packagereference。 对于大多数dll来说效果很好。
但是现在我有一些COM参考资料,我不确定我要执行的操作是否正确。 在.csproj中看起来像这样:
<COMReference Include="MyLib">
<Guid>{ABCDEFA1-AD1F-AFBE-ACED-AFDF123AADEE}</Guid>
<VersionMajor>X</VersionMajor>
<VersionMinor>Y</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
作为预构建事件,我有
<PreBuildEvent>
regsvr32 /s $(SolutionDir)Lib\MyLib.dll
</PreBuildEvent>
现在我很生气,因为我读了这个article,它告诉我通过nuget包中的ReferencePath
添加EmbedInteropTypes
和.targets
。
但是我没有使它起作用(或者就我而言,这似乎还不够(查看GUID
中引用的COMReference
))
所以这让我开始思考,也许我根本不需要将其转换为Packagereference,而只需添加一个(包括“ MyLib”),使prebuild-event与我的packages-folder中的dll冲突,保持COMReference不变。
现在,我刚刚将我需要的库添加到要在content\x86
下提取的nuget包中,并修改了prebuild-event使其指向$([MSBuild]::EnsureTrailingSlash('$(NugetPackageRoot)'))
。
这似乎可行,可以构建,到目前为止,我没有运行时错误,但是我不确定这是最佳实践还是缺少什么,任何指针都将不胜感激。