什么';这是在C#应用程序中包含Powershell的最佳实践

本文关键字:Powershell 包含 最佳 应用程序 什么 | 更新日期: 2023-09-27 17:59:08

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

为此,我遵循了几个指示,告诉我应该将csproj文件中的References更改为:

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

对于每个引用。这样,它实际上可以在计算机上查找最新的DLL。

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

"加载系统Windows PowerShell管理单元时出错。请与Microsoft支持服务部门联系。"

现在,我已经将其缩小到不同计算机上的Powershell或Automations dll的不同版本。整个应用程序在我的电脑上运行良好,但在(某些)其他电脑上运行不好。

所以!我不知道我是否给出了太多细节,但我希望我的应用程序能够简单地复制所需的DLL或引用已经存在的DLL(最好是后者)。

有人能帮忙吗?

什么';这是在C#应用程序中包含Powershell的最佳实践

这些文件由PowerShell安装。您不希望将它们与应用程序一起安装。您正在使用的安装程序应该提供一种"排除"这些依赖项的方法。您最好检查您作为自定义操作所需的PowerShell版本,然后在用户不需要合适的PowerShell版本时提醒他们。