fly*_*lyx 5 nuget nuget-package
我正在尝试构建一个 NuGet 包,其中包含本机 DLL,当项目使用该包时,这些 DLL 将放置在输出文件夹中。我试图使用这个问题中的几个建议,但我总是遇到同样的问题。
我目前的 NuGet 包布局是这样的:
\build
packageId.targets
file1.dll
file2.dll
\lib
\netstandard1.4
assembly.dll
Run Code Online (Sandbox Code Playgroud)
内容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>
Run Code Online (Sandbox Code Playgroud)
根据其他问题的答案,这应该会导致我的 DLL 被放置在bin\Debug使用包的项目目录中。然而,他们不是。相反,它们被放置在bin\Debug\packages\packageId\build.
现在我已经尝试了很多,我注意到越来越多我无法理解的奇怪行为:
.targets文件,则它们根本不会被复制。也没有错误信息。.targets文件更改为仅file1.dll在Include=和 中引用,则Link=无论如何都会复制两个文件。.targets文件并将任何内容复制build到输出文件夹中的该路径中,但是当我删除该.targets文件时,DLL 文件将不再被复制。现在我更不明白发生了什么。
我需要更改什么才能将 DLL 直接复制到bin\Debug.
在 NuGet 中处理特定于运行时的同意的新方法是使用runtimes文件夹来放置本机资产:
\lib
\netstandard2.0
ManagedWrapper.dll
\runtimes
\win-x86
\native
NativeThing.dll
\win-x64
\native
NativeThing.dll
\linux-x64
\native
libNativeThing.so
\osx-x64
\native
libNativeThing.dylib
Run Code Online (Sandbox Code Playgroud)
如果包是从 .NET Framework 项目使用的,则可能需要添加对Microsoft.NETCore.Platforms包的引用,该包runtimes.json为 NuGet 提供运行时图 ( ) 以在不使用基本 RID 的情况下提供正确的 RID 映射(例如win10-x64回退到win-x64资源)。
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |