如何在类库(.NET Core)中将COM共享注册为NuGet包?
共有4个项目:如何在类库(.NET Core)中将COM共享注册为NuGet包?,.net,powershell,nuget,.net-core-rc2,.net-standard-1.5,.net,Powershell,Nuget,.net Core Rc2,.net Standard 1.5,共有4个项目: MyProject.Domain MyProject.Services.Contracts MyProject.Services.Acomba MyProject.Services.Acomba.Tests Acomba项目依赖于一个NuGet包,我是根据这个包打包的 所有这些项目的类型和目标如下: NET451 NET452 NET461 NETSTANDARD1.5 除了由.NET核心应用程序组成的测试项目外,该应用程序的目标是: NETCOREAPP1.0 正如网页
- NET451
- NET452
- NET461
- NETSTANDARD1.5
- NETCOREAPP1.0
param( $installPath, $toolsPath, $package, $project )
regsvr32 Join-Path $toolsPath '\AcoSDK.dll' /s
$project.Object.References
| Where-Object { $_.Name -eq "Acomba.SDK" }
| ForEach-Object { $_.EmbedInteropTypes = $false }
更新
在使用regsvr32.exe
注册DLL时,我注意到出现了一个错误。事实证明,注册DLL需要提升权限。所以,我试着以管理员的身份运行VS,但没有任何改变。将显示相同的错误消息=(
是因为我使用NETCOREAPP1.0(测试项目)和NETSTANDARD1.5库运行测试失败了还是
要注意的是,每当我使用“常规”类库时,它都能完美地工作。我只是不理解这个问题
更新
CLSID使用RegEdit.exe在Windows注册表中找到。因此它已注册
是什么原因导致项目找不到注册信息或其他信息?只是一个猜测:可能与COM组件的位数(32位/64位)有关吗?@DavidBrabant:我只是说不上来。我猜COM库是32位的,因为项目是在很多很多年前首次推出的。我听说在注册
regsvr32.exe
的任何一个版本时,架构都会有冲突-我只是记不起哪个是哪个。@DavidBrabant:经过一些研究,我使用bot注册了COM我试图找到如何在我的XPROJ(类库(.NET Core))中针对x86CPU体系结构。唯一可用的选项是AnyCPU
,这似乎会在像我这样的64位Windows上造成一些问题。我创建了一个新的编译配置选项x86
,它似乎没有解决问题-除了我从AnyCPU
创建它,因为x86
似乎不存在于XPROJ中,而且高级配置选项。只是一个猜测:它可能与COM组件的位数(32位/64位)有关吗?@DavidBrabant:我只是说不上来。我猜COM库是32位的,因为项目是在很多很多年前首次推出的。我听说在注册regsvr32.exe
的任何一个版本时,架构都会有冲突-我只是记不起哪个是哪个。@DavidBrabant:经过一些研究,我使用bot注册了COM我试图找到如何在我的XPROJ(类库(.NET Core))中针对x86CPU体系结构。唯一可用的选项是AnyCPU
,这似乎会在像我这样的64位Windows上造成一些问题。我创建了一个新的编译配置选项x86
,它似乎没有解决问题-除了我从AnyCPU
创建它,因为x86
似乎不存在于XPROJ中,而且高级配置选项。