gpt4 book ai didi

.net - 如何在 Powershell 二进制模块(.Net Standard 和 Nuget)中处理公共(public)和私有(private)依赖项和打包

转载 作者:行者123 更新时间:2023-12-03 00:08:48 24 4
gpt4 key购买 nike

我有一个示例项目 https://github.com/hagatorn/LunarSolarDate这是预发布,所以请原谅缺乏完成。

如果我构建项目,我可以在 bin 目录中导入模块:

Import-Module .\SolarLunarName.PoSH.dll

但是,当运行唯一的命令时,我会遇到错误。
Get-Date | Get-SolarLunarName

Get-SolarLunarName : Could not load file or assembly 'RestSharp, Version=106.6.2.0, Culture=neutral,
PublicKeyToken=598062e77f915f75' or one of its dependencies. The system cannot find the file specified.
At line:1 char:12
+ get-date | Get-SolarLunarName
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-SolarLunarName], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,SolarLunarName.PoSH.GetSolarLunarName

在 bin 目录中弹出丢失的 dll 相对容易解决。然后出现了一条不太有用的消息,但是将 Newtonsoft.Json.dll 和 Newtonsoft.Json.pdb 添加到 bin 目录使我遇到了一个问题,我将在一个单独的问题中处理。

手动复制周围的依赖关系让我有点担心,所以我开始尝试尝试使用 nuget 构建和部署,并希望可以在这个模型中完全处理依赖关系。

将模块及其私有(private)依赖项发布为已发布的 nuget 包后,我可以使用以下命令形成依赖项。
nuget.exe install SolarLunarName.PoSH 

然而,在它们的初始状态中,依赖关系在一个目录结构中逻辑分离,这使得二进制模块无法访问它们。

作为构建或软件包安装的一个组成部分,有没有更好的方法? powershell 可以做一些包管理并使用 .deps.json 来安装公共(public)依赖项吗?

我看到另一个线程讨论通过对嵌套依赖项进行虚拟调用来强制 msbuild 在 bin 目录输出中包含额外的二进制文件。尽管这个解决方案很方便,但它似乎有点错误,并且与包管理的逻辑相反。 Dependent DLL is not getting copied to the build output folder in Visual Studio

还有以下线程,我承认如果包管理确实正常工作并且我误解了问题,我承认这可能是相同的问题。 PowerShell Binary Module assembly dependency error .

最后还有另一个关于将你的包标记为“PSModule”的线索我相信我已经在 Visual Studio 项目属性包页面中完成了这个。但也许这不是如何实现的?

最佳答案

这个问题是由于缺乏具体的目标框架和依赖项造成的,该依赖项不是用 .Net 标准编写的,并且在最终编译到目标框架时会出现各种不同的包。

可能已经发布了一个更新版本的 Rest Sharp,它没有这个问题,但是一些 SQLite 驱动程序和 ORM 仍然有这个限制。

关于.net - 如何在 Powershell 二进制模块(.Net Standard 和 Nuget)中处理公共(public)和私有(private)依赖项和打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com