首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PowerShell脚本中导入依赖DLL

在PowerShell脚本中导入依赖DLL
EN

Stack Overflow用户
提问于 2021-12-07 09:34:12
回答 1查看 452关注 0票数 1

问题陈述:

在PowerShell脚本中导入依赖DLL的最佳方法。

解释:

我有一个DLL,即a.dll,它对b.dll、c.dll、.有几乎10个依赖项。当我在一个a.dll脚本中从Nuget包A导入PowerShell时,由于依赖的DLL不在同一个目录中,它会抛出一个错误。我只有Nuget包中的DLL。与往常一样,包将在

代码语言:javascript
运行
复制
├── Nuget-A
│   ├── 1.0
|   |    |── a.dll
│   
├── Nuget-B
│   ├── 2.0
|   |    |── b.dll

在PoweShell脚本中,我将导入a.dll,

导入-模块"Nuget-A/1.0/a.dll“

这会引发一个错误,因此我执行以下操作

导入-模块“Nuget/2.0/b.dll”

进口-模块"Nuget-A/1.0/a.dll“

同样,对于10个DLL,我也必须这样做。

处理场景的最佳方式是什么?我也愿意接受任何其他方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 13:50:10

我对PowerShell不是很熟悉,但是我希望如果所有的程序集都在同一个目录中,那么当您导入a.dll时,它会自动找到引用,比如b.dll。这就是.NET运行时多少加载程序集的方式,而不管PowerShell、控制台应用程序、web应用程序等等。

因此,与其创建只包含a.dll和包B的依赖项的包A,不如让包A没有任何依赖项,并包含其中的所有10个dll。

要做到这一点,有几种方法。一个是重用csproj的PackAsTool。它发布项目(使用等效的dotnet publish),然后打包发布文件夹中的所有内容。因为它是为打包控制台应用程序而设计的,所以以后可以通过dotnet tool install安装这些应用程序,因此您可能需要进行一些黑客操作才能使其正常工作。另一种方法是运行dotnet publish,然后从nuget.org/ nuget.exe获取nuget.exe,然后到发布目录运行nuget.exe spec创建一个模板.nuspec文件,用您想要的所有元数据编辑nuspec,然后运行nuget.exe pack。它将将目录中的所有文件打包到nupkg中。还有其他的方法,例如,尝试一个社区创建的工具nugetizer,但是这个问题是关于如何解决引用的程序集加载,而不是如何打包,所以我将保留它。我的观点是,当您有一个包含PowerShell cmdlet的包时,您不需要担心使用这个包加载powershell脚本/环境中的所有依赖项,所以确保包是“自包含的”。它将负担从消耗时间转移到打包时间,但在打包时,所有的依赖项都是已知的,因此这是一个更容易解决的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70257718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档