假设我已经打包了一个.net应用程序,例如MyConsoleApp.nupkg
,并在源代码中可用,我将如何处理";安装";这个到一个文件夹,这样我就可以从这个文件夹运行它:
my-folder/MyConsoleApp.dll
my-folder/Newtonsoft.Json.dll
....Other references....
我尝试过使用packagesDirectory选项进行nuget安装,但这在packages文件夹中提供了熟悉的输出,例如:
myconsoleapp/1.0.0/lib/netcoreapp3.1/MyConsoleApp.dll
newtonsoft.json/11.0.1/lib/netstandard2.0/Newtonsoft.Json.dll
newtonsoft.json/11.0.1/lib/netstandard1.3/Newtonsoft.Json.dll
newtonsoft.json/11.0.1/lib/net20/Newtonsoft.Json.dll
....Other references....
我想有一个msbuild目标,它将正确的内容从packages目录复制到构建目录中——有一种简单的方法可以使用吗?
我曾尝试使用dotnet restore/build
和使用PackageReference的.proj
文件的变体,这些文件不引用特定的构建目标,但都不起作用:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="MyConsoleApp" Version="*" />
</ItemGroup>
<Project>
我不想制作一个引用我的控制台应用程序(或asp.net核心应用程序(的MyDummy.cssproj来实现这一点,因为它看起来不太干净,我担心SDK和<PropertyGroup>
的内容是否兼容正确。
我知道这可能不属于最佳实践,但我想看看在任何情况下是否可以做到。
背景
我想部署一个由c核心库、应用程序和插件组成的网格,使它们都使用完全相同的版本。
库(核心应用程序框架(由应用程序(web api、后台服务工作者(和插件(具有对库的nuget引用的dotnet脚本(引用。插件依次由库调用。
插件必须引用与应用程序加载的相同的库程序集,但在运行时解析为NuGet引用,这避免了脚本中对System.Etc.Dll的一长串猜测引用以及相关的运行时故障。
通过nuget包安装应用程序会带来一种有趣的方式,可以获得一个单一的真相来源——nuget来源。
我已经看到了dotnet脚本是如何做到这一点的:
https://github.com/filipw/dotnet-script/blob/master/src/Dotnet.Script.DependencyModel/ProjectSystem/csproj.template
在具有packagereferences的项目的msbuild过程中,您可以访问引用列表。这类似于做一个虚拟项目的完整构建,但看起来可能是目前唯一的方法——似乎没有人想回答,所以我将把它留在这里!