Phi*_*aré 3 visual-studio nuget
我的项目中需要引用一个程序集,该程序集需要将“嵌入互操作类型”设置为false才能成功进行编译。如果不放置此选项,则会出现编译时错误:
A reference was created to embedded interop assembly 'Interop.MSTSCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because of an indirect reference to that assembly created by assembly 'AxInterop.MSTSCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Consider changing the 'Embed Interop Types' property on either assembly.
Run Code Online (Sandbox Code Playgroud)
如果我只是有一个项目,我会将选项设置为false而不用担心它,但是现在我正在使用它制作一个nuget程序包,我试图找到一种在程序包设置选项的方法已添加。
我的nuspec文件当前具有以下内容(省略了元数据):
<files>
<file src="Interop.MSTSCLib.dll" target="lib\net40" />
<file src="AxInterop.MSTSCLib.dll" target="lib\net40" />
</files>
Run Code Online (Sandbox Code Playgroud)
我查看了nuget文档,但找不到如何执行此操作。可能吗?
您将在tools目录中需要一个install.ps1,例如
param($installPath, $toolsPath, $package, $project)
$project.Object.References | Where-Object { $_.Name -eq "Interop.MSTSCLib" } | ForEach-Object { $_.EmbedInteropTypes = $false }
$project.Object.References | Where-Object { $_.Name -eq "AxInterop.MSTSCLib" } | ForEach-Object { $_.EmbedInteropTypes = $false }
Run Code Online (Sandbox Code Playgroud)
根据问题,NuGet可以分发COM dll吗?这就是答案。区别在于您不需要调用regsvr32,因为您没有尝试分发和注册com dll。
归档时间: |
|
查看次数: |
1317 次 |
最近记录: |