我将尝试构建一个NuGet包,其中包括本地DLL,当项目使用该包时,这些DLL应放置在输出文件夹中。我已经尝试使用此问题中的几个建议,但我始终遇到同样的问题。
我当前的NuGet包布局如下:
根据其他问题的答案,我的DLL文件应该被放置在使用该包的项目的
我需要做哪些更改才能将DLL文件正确复制到
我当前的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
文件,则根本没有复制它们。也没有错误消息。 - 如果我只在
Include=
和Link=
中引用file1.dll
,则会复制两个文件。 - 所以我想知道是否有某些策略忽略了
.targets
文件,并将build
中的任何内容都复制到输出文件夹中的该路径,但当我删除.targets
文件时,DLL文件就不会再被复制了。
我需要做哪些更改才能将DLL文件正确复制到
bin\Debug
中?