我的nuget包项目结构如下(非常简单):
- lib
MyCom.dll
- tools
Init.ps1
初始ps1的内容:
param($installPath, $toolsPath, $package, $project)
$project.Object.References | Where-Object { $_.Name -eq "MyCom" } | ForEach-Object { $_.EmbedInteropTypes = $false }
Nuget spec:
<?xml version="1.0"?>
<package >
<metadata>
<id>***</id>
<version>***</version>
<title>***</title>
<authors>***</authors>
<owners>***</owners>
<licenseUrl>***</licenseUrl>
<projectUrl>***</projectUrl>
<iconUrl>***</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>***</description>
<releaseNotes>***</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>***</tags>
<references>
<reference file="MyCom.dll" />
</references>
</metadata>
<files>
<file src="lib\MyCom.dll" target="lib" />
</files>
</package>
我不知道为什么init没有将myCom.dll嵌入互操作设置为false。 如果我使用Install.ps1,也会发生同样的事情。
我正在使用VS 2015。
答案 0 :(得分:0)
只需要将init powershell脚本添加到files标签。
<files>
<file src="tools\Init.ps1" target="tools\Init.ps1" />
<-- more files here !-->
</files>