我正在尝试构建一个NuGet包,其中包含本机dll,当项目使用该包时,这些dll将被放置在output文件夹中。我已经试着使用了
this question
,但我总是遇到同样的问题。
我当前的NuGet包布局如下:
\build
packageId.targets
file1.dll
file2.dll
\lib
\netstandard1.4
assembly.dll
内容
packageId.targets
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)\*.dll"/>
<None Include="@(NativeLibs)" Link="$(RecursiveDir)$(Filename)$(Extension)">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
根据其他问题的答案,这将导致我的DLL被放置在
bin\Debug
使用包的项目的目录。然而,他们不是。相反,它们被放置在
bin\Debug\packages\packageId\build
.
现在我做了很多实验,我注意到越来越多的奇怪的行为,我无法理解:
-
如果我将dll移到NuGet包的根目录(就像一个答案所建议的那样)并更改
.targets
相应地归档,
-
如果我改变主意
文件到
只有
参考
file1.dll
两者都有
Include=
Link=
,两个文件都会被复制。
-
.目标
build
文件,DLL文件将不再被复制。
现在我更不明白发生了什么。
我需要更改什么才能将DLL复制到
bin\调试
?