繁体   English   中英

将Powershell包含在C#应用程序中的最佳实践是什么?

[英]What's the best practice for including Powershell in a C# application?

我已经启动并运行了我的应用程序,但是它似乎不想通过ClickOnce正确安装。 它使用Powershell,我在应用程序文件中包含了Microsoft.Management.Infrastructure.DLL,Microsoft.Management.Infrastructure.Native.DLL和System.Management.Automation.DLL。 我已经尝试了所有方法(包括,先决条件,已排除)。 我还通过将它们从GAC复制到该文件夹​​中,将它们手动复制到我的引用中。 另外,我将它们设置为复制本地。

为此,我遵循了几条指令,告诉我应该将csproj文件中的“引用”更改为:

<Reference Include="Microsoft.Management.Infrastructure"/>

对于每个参考。 这样,它实际上会在计算机上寻找最新的DLL。

问题是,如果将它们设置为prereq,那么我会收到一条消息,告诉我它们应该首先安装在GAC中。 如果设置为包括,我相信它会复制文件,让我的应用程序运行,但我得到...

“加载系统Windows PowerShell管理单元时发生错误。请与Microsoft支持服务联系。”

现在,我将其范围缩小到不同版本的Powershell或不同计算机上的Automations dll。 整个应用程序可以在我的计算机上正常运行,但不能在其他(某些)计算机上运行。

所以! 我不知道我是否提供了太多细节,但是我想发生的事情是我的应用程序仅复制所需的DLL或引用已经存在的DLL(最好是后者)。

有人能帮忙吗?

这些文件由PowerShell安装。 您不想与您的应用程序一起安装它们。 您正在使用的安装程序应提供一种“排除”这些依赖性的方法。 最好的选择是检查自定义操作所需的PowerShell版本,然后在用户不必使用适当版本的PowerShell时警告用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM