将nuget包安装到没有csproj的文件夹中



假设我已经打包了一个.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过程中,您可以访问引用列表。这类似于做一个虚拟项目的完整构建,但看起来可能是目前唯一的方法——似乎没有人想回答,所以我将把它留在这里!

相关内容

  • 没有找到相关文章

最新更新