C# COMReference能否完全迁移到PackageReference?

C# COMReference能否完全迁移到PackageReference?,c#,.net,reference,com,nuget,C#,.net,Reference,Com,Nuget,我正试图摆脱解决方案中的lib文件夹,将DLL迁移到nuget,并从Packages.config切换到packagesreference。 这对大多数DLL都很有效 但现在我有一些COM参考资料,我不确定我所尝试的是否正确。 在.csproj中看起来是这样的: <COMReference Include="MyLib"> <Guid>{ABCDEFA1-AD1F-AFBE-ACED-AFDF123AADEE}</Guid> <VersionMa

我正试图摆脱解决方案中的lib文件夹,将DLL迁移到nuget,并从Packages.config切换到packagesreference。 这对大多数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>

{ABCDEFA1-AD1F-AFBE-ACED-AFDF123AADEE}
X
Y
0
tlbimp
假的
真的
作为一个预构建事件,我有

<PreBuildEvent>
    regsvr32 /s $(SolutionDir)Lib\MyLib.dll
</PreBuildEvent>

regsvr32/s$(SolutionDir)Lib\MyLib.dll
现在我很恼火,因为我读到这篇文章时,它告诉我通过nuget包中的
.targets
添加
ReferencePath
EmbedInteropTypes

然而,我并没有做到这一点(或者在我的情况下,这似乎是不够的(查看
comference
中引用的
GUID

这让我想到,也许我根本不需要将其转换为Packagereference,只需添加一个(包括“MyLib”),让预构建事件与我的packages文件夹中的dll相对应,并保持COMReference不变

现在,我刚刚将所需的库添加到我正在使用的nuget包
content\x86
,并将预构建事件修改为指向
$([MSBuild]::ensureTrailingFlash('$(NugetPackageRoot)'))


这似乎是可行的,它构建了,我没有运行时错误(到目前为止),但我不确定这是否是最佳实践,或者如果我遗漏了什么,任何指针都是非常值得赞赏的。

预构建事件是负1000点。下一步你什么也做不到,让它高于零。必须有一个像样的安装程序,这是一个与“你需要Windows和.NET”没有根本区别的先决条件。@HansPassant不能不同意这一点:)我们在开发机器上本地使用一个批处理文件,但在生成的服务器上,我们非常需要这个预生成事件,我只看到我可以将它“隐藏”到“nuget包”中,但除此之外。。。这个预构建事件是负一千个优雅点。下一步你什么也做不到,让它高于零。必须有一个像样的安装程序,这是一个与“你需要Windows和.NET”没有根本区别的先决条件。@HansPassant不能不同意这一点:)我们在开发机器上本地使用一个批处理文件,但在生成的服务器上,我们非常需要这个预生成事件,我只看到我可以将它“隐藏”到“nuget包”中,但除此之外。。。无聊的