Nuget添加非托管文件
我正在使用以下*.targets文件添加构建操作Nuget添加非托管文件,nuget,unmanaged,Nuget,Unmanaged,我正在使用以下*.targets文件添加构建操作 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <None Include="$(MSBuildThisFileDirectory)\libeay32
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)\libeay32.dll">
<Link>libeay32.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\COMAssinaDocs.dll">
<Link>COMAssinaDocs.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\InterOps.ComAssinaDocs.dll">
<Link>InterOps.ComAssinaDocs.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\ssleay32.dll">
<Link>ssleay32.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
libeay32.dll
保存最新
COMAssinaDocs.dll
保存最新
InterOps.ComAssinaDocs.dll
保存最新
ssleay32.dll
保存最新
这就是nuspec:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>xxx.Providers.SignDocs</id>
</metadata>
<files>
<file src="bin\Release\xxx.Providers.SignDocs.targets" target="build" />
<file src="bin\Release\xxx.Providers.SignDocs.dll" target="lib\net45" />
<file src="bin\Release\xxx.Providers.SignDocs.Impl.dll" target="lib\net45" />
</files>
</package>
xxx.Providers.SignDocs
我使用这段nuget文档来构建这个包:
基本上,我想要的是使用包将一些非托管DLL复制到项目的输出文件夹中,即使我按照说明操作,目标项目文件targets设置也不会添加,因此文件不会复制到输出目录中。我错过了什么
更新
能够使用下面的配置使其工作
xxx.Providers.SignDocs.targets
libeay32.dll
保存最新
COMAssinaDocs.dll
保存最新
InterOps.ComAssinaDocs.dll
保存最新
ssleay32.dll
保存最新
xxx.Providers.SignDocs
目标文件需要包含在nuspec文件的“package/files”元素中,否则它不会包含在包中。它需要一个“构建”的目标。
目标文件的名称也需要与包的名称相同。目标文件需要包含在nuspec文件的“package/files”元素中,否则它不会包含在包中。它需要一个“构建”的目标。
目标文件的名称也需要与包的名称相同。我尝试了此方法,但无效。如果目标文件位于bin\Release文件夹中,则无效?是的。我肯定我遗漏了一些东西,但我看不出它是什么。nupkg文件实际上只是一个zip文件。打开它,你会看到一个包含“目标”文件的“构建”。如果它在那里并且命名正确,那么在安装包时应该向项目中添加对它的引用。如果目标文件不在包中,则nuspec存在问题。如果目标文件在那里,请在安装包后检查项目文件,查看它是否引用目标文件。我知道这是一个zip文件,我检查了它,但文件实际上不在那里。我做了一些改变,最终使它开始工作。ThanksI尝试了此操作,但在bin\Release文件夹中的目标文件中无效?是的。我肯定我遗漏了一些东西,但我看不出它是什么。nupkg文件实际上只是一个zip文件。打开它,你会看到一个包含“目标”文件的“构建”。如果它在那里并且命名正确,那么在安装包时应该向项目中添加对它的引用。如果目标文件不在包中,则nuspec存在问题。如果目标文件在那里,请在安装包后检查项目文件,查看它是否引用目标文件。我知道这是一个zip文件,我检查了它,但文件实际上不在那里。我做了一些改变,最终使它开始工作。谢谢
<None Include="$(MSBuildThisFileDirectory)\libeay32.dll">
<Link>libeay32.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\COMAssinaDocs.dll">
<Link>COMAssinaDocs.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\InterOps.ComAssinaDocs.dll">
<Link>InterOps.ComAssinaDocs.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="$(MSBuildThisFileDirectory)\ssleay32.dll">
<Link>ssleay32.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>xxx.Providers.SignDocs</id>
</metadata>
<files>
<file src="..\..\tools\libeay32.dll" target="build" />
<file src="..\..\tools\COMAssinaDocs.dll" target="build" />
<file src="..\..\tools\InterOps.ComAssinaDocs.dll" target="build" />
<file src="..\..\tools\ssleay32.dll" target="build" />
<file src="bin\Release\xxx.Providers.SignDocs.targets" target="build" />
<file src="bin\Release\xxx.Providers.SignDocs.dll" target="lib\net45" />
<file src="bin\Release\xxx.Providers.SignDocs.Impl.dll" target="lib\net45" />
</files>
</package>