我有一个Nuget包,其中包含我想在解决方案之间共享的测试助手类。当我尝试添加包时,我收到此消息:
install-package:无法添加对' SQLite.Interop'。
的引用在行:1字符:1
+ install-package' c:\ work \ directory_name \ package_name.nu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:NotSpecified:(:) [Install-Package],Exception
+ FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
我的Nuget包有一个C#test helper项目,引用了
packages.config包含
<package id="System.Data.SQLite" version="1.0.65" targetFramework="net451" />
.NET项目包括
SQLite.Interop.dll作为文件
BuildAction:无
复制到输出目录:始终复制
Nuite包中包含SQLite.Interop.dll。
不言而喻,在测试助手项目(在Nuget包中)或我试图将Nuget包添加到的项目中没有对SQLite.Interop的引用。
我正在使用带有nuget pack
的nuspec文件来创建包。
这是nuspec文件定义:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>...</id>
<version>1.0.0</version>
<title>...</title>
<authors>...</authors>
<owners>..</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>...</description>
<copyright>...</copyright>
<releaseNotes>
</releaseNotes>
</metadata>
<files>
<file src="build\bin\**" target="lib\net45" />
<file src="package_name.targets" target="build"/>
</files>
</package>
项目中没有.sdf文件
关于如何设置这个Nuget包的任何想法,所以我可以将它添加到其他项目并将SQLite.Interop.dll复制到它们的输出目录中?
答案 0 :(得分:0)
事实证明,所需要的只是对我的nuspec和目标文件的一个小改动。
通过从.lib目录中排除SQLite.Interop.dll,Nuget不再尝试在目标项目中添加对.dll的引用。
我仍然可以将interop dll放在.content目录中,然后使用.targets文件将其包含在目标项目中。
Nuspec文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>...</id>
<version>1.0.0</version>
<title>...</title>
<authors>...</authors>
<owners>..</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>...</description>
<copyright>...</copyright>
<releaseNotes>
</releaseNotes>
</metadata>
<files>
<file src="build\bin\**" target="lib\net45" exclude="build\bin\SQLite.Interop.dll" />
<file src="build\bin\SQLite.Interop.dll" target="content"/>
<file src="package_name.targets" target="build"/>
</files>
</package>
定位文件
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)\..\content\SQLite.Interop.dll">
<Link>SQLite.Interop.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>