我有一个针对两个不同操作系统/框架的项目:
net461 在Windows和 netcoreapp2.0 在OSX上我正在试图弄清楚如何为NuGet正确打包它.根据这篇文章,我应该能够像这样打包它们:
/runtimes/win/lib/net461/myassembly.dll
/runtimes/osx/lib/netcoreapp2.0/myassembly.dll
Run Code Online (Sandbox Code Playgroud)
当我将NuGet包添加到另一个项目时,打包的程序集不会作为对目标项目的引用添加.
然后我在某处读到你还需要在/ref文件夹中添加引用库,所以我尝试了这个:
/runtimes/win/lib/net461/myassembly.dll
/runtimes/osx/lib/netcoreapp2.0/myassembly.dll
/ref/net461/myassembly.dll
/ref/netcoreapp2.0/myassembly.dll
Run Code Online (Sandbox Code Playgroud)
在这种情况下,程序集将作为对目标项目的引用添加,我可以构建它,但不会将所需的程序集复制到输出文件夹.
关于这一切的文件非常模糊,我很丢失.
我错过了什么?
相关NuGet问题:https://github.com/NuGet/Home/issues/7316
更新:我已经整理了一个示例项目,演示了我想要实现的目标.特别参见自述文件的底部,标题为"NuGet Packaging".
Bra*_*son 11
这是我最终想出/猜到的(因为我最好能告诉他们这里没有官方文件)
把这一切放在一起,我的原始示例应该看起来像这样:
/lib/net461/myassembly.dll (net461/Windows Compile and Runtime)
/runtimes/osx/lib/netcoreapp2.0/myassembly.dll (netcore/OSX Runtime)
/runtimes/win/lib/netcoreapp2.0/myassembly.dll (netcore/Win Runtime)
/ref/netcoreapp2.0/myassembly.dll (netcore/* Compile Time)
Run Code Online (Sandbox Code Playgroud)
我花了很多时间在Mac和Visual Studio的Visual Studio中的OSX上尝试您的项目。我将尽量坚持事实观察,而不会陷入“为什么不这么做X”的问题。
runtimes/{rid}/lib/{tfm}/*.dll路径看行target="lib/{tfm}/..."程序集是自动引用的,runtimes/...不是netstandard似乎可以使您的包在项目netcoreapp和netstandard项目中都能正常工作(例如use target="lib/netstandard1.6/...")。与此比较runtimes/似乎适用于您将在运行时加载的平台相关程序集。例如,在runtimes/win-x64/native/和中runtimes/win-x86/native/加载了32/64位本机程序集AssemblyLoadContext(McMaster的另一篇文章)target="ref/...",但是您可以添加Explicit Assembly<references>(在nuspec <metadata>块内)dotnet publish它们将包括在内:
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |