我已經啓動並運行了我的應用程序,但它似乎並不想通過ClickOnce正確安裝。它使用Powershell,我在我的應用程序文件中包含了Microsoft.Management.Infrastructure.DLL,Microsoft.Management.Infrastructure.Native.DLL和System.Management.Automation.DLL。我已經嘗試了所有這些方法(包括,先決條件,排除)。我也將它們複製到GAC中並手動複製到該文件夾中。另外,我讓他們複製本地。在C#應用程序中包含Powershell的最佳做法是什麼?
對於這一點,我跟着幾個指令,告訴我,我應該改變我的csproj文件中提及:
<Reference Include="Microsoft.Management.Infrastructure"/>
每個引用。這樣,它實際上會在計算機上查找最新的DLL。
問題是,如果它們設置爲prereq,我會收到一條消息告訴我他們應該首先安裝在GAC中。如果將它們設置包括,我相信它複製文件,讓我的應用程序運行,但我得到...
「錯誤加載操作系統Windows PowerShell管理單元時發生。 請與Microsoft支持服務。」
現在,我已經縮小到不同版本的Powershell或自動化dll在不同的計算機上。整個應用程序在我的電腦上工作正常,但不在其他(某些)上。
所以!我不知道我是否提供了太多的細節,但是我希望發生的事情是爲我的應用程序簡單地複製所需的DLL或引用已存在的DLL(最好是後者)。
任何人都可以幫忙嗎?
有沒有辦法使用他們的PowerShell版本?我遇到的問題是無論如何,它總是尋找我的版本。我注意到今晚我的應用程序可以在任何Windows 8計算機上運行,但不是7,Vista或XP。我認爲... ...沒有額外的細節會尋找他們的版本,而不是我已經標記的版本。 –
2013-02-15 03:03:38
在Windows 8上,PowerShell 3.0是默認設置。檢查您項目引用的System.Management.Automation的版本。如果它是3.0,那麼你的用戶需要PowerShell 3.0。我不確定Microsoft.Management.Infrastructure,但我認爲它可能只適用於PowerShell 3.0(它是針對.NET 4.0編譯的)。在這種情況下,安裝程序應檢查Windows 7和Windows Server 2008 SP2/R2 SP1上安裝的WMF 3.0。它在Vista或XP上不受支持。 http://www.microsoft.com/en-us/download/details.aspx?id=34595 – 2013-02-15 05:20:09
我想現在我可以包括WMF 3.0,但現在呢,但未來呢?說下一個版本的Powershell不支持7.顯然我想保留7個支持一段時間(很多人會使用它很長一段時間)。是否仍然沒有辦法讓我的應用程序只引用他們擁有的任何版本的Powershell? – 2013-02-15 13:16:32