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

时间:2013-02-14 20:25:25

标签: c# powershell office365

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

为此,我按照几条说明告诉我应该将csproj文件中的引用更改为:

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

每个参考文献。这样它实际上会在计算机上查找最新的DLL。

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

  

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

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

原来如此!我不知道我是否给出了太多细节,但我想要发生的是我的应用程序只需复制所需的DLL或已经存在的DLL(最好是后者)。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这些文件由PowerShell安装。您不想在应用中安装它们。您正在使用的安装程序应该提供一种“排除”这些依赖项的方法。您最好的选择是检查您需要的PowerShell版本作为自定义操作,然后在用户没有相应版本的PowerShell时提醒用户。