我正在嘗試在Windows Server計算機上構建ClickOnce Windows Forms項目(.NET 3.5 / Visual Studio 2010) . (為了使用Hudson CI自動化構建過程 . )
為了對ClickOnce清單進行簽名,我在Visual Studio中創建了一個臨時密鑰 temp.pfx . 我可以在我的工作站上從Visual Studio成功構建和部署項目 . 但是當在服務器上運行MSBuild時,我收到以下錯誤消息:
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):錯誤MSB3326:無法導入以下密鑰文件: . 密鑰文件可能受密碼保護 . 要更正此問題,請嘗試再次導入證書或手動將證書導入當前用戶的個人證書存儲區 . [C:.hudson \ jobs [...] . csproj] C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):錯誤MSB3321:導入密鑰文件“temp . pfx“被取消了 . [C:.hudson \職位[...]的csproj]
我沒有運氣就嘗試了以下所有問題和答案:
=>就我而言,錯誤消息并不表示證書存儲的名稱,而是表示“當前用戶的個人證書存儲” .
=>即使用"Personal"作為容器名稱( sn -i temp.pfx personal )嘗試接受的答案,它也無法解析密鑰:
無法解析ALiS_TemporaryKey.pfx中的PKCS#12 blob - 發生內部錯誤 .
=>我嘗試了接受的答案,但無法導入密鑰文件,因為"Either the user profile is not accessible or the private key that you are importing might require a cryptographic service provider that is not installed on your system"
=>如果我嘗試通過在Windows資源管理器中雙擊導入文件(RobinDotNet的建議),也會發生同樣的情況
=>這個問題的OP也沒有成功解決上述兩個問題,但遺憾的是,他得到的答案甚至都沒有幫助我:
以在構建計算機上運行MSBuild的用戶身份登錄,手動調用MSBuild,然后在出現提示時鍵入密碼 .
=>我登錄并運行了 msbuild myproject.sln 但它甚至沒有提示我輸入密碼 .
最終為我修復的是制作TFS Build服務在本地計算機上運行管理員的帳戶 .
=>運行Hudson的帳戶(更確切地說:Tomcat)已經是本地管理員 . 我試圖從"Run As Administrator"命令行運行MSBuild,并且仍會得到相同的錯誤消息 .
Update: 我試圖在同一臺服務器上的Visual Studio中打開解決方案并構建它 . 我犯了同樣的錯誤 . 當我嘗試在項目屬性的“簽名”選項卡中重新導入PFX文件時,它會告訴我"invalid password" . 如果我嘗試在我的工作站上的Visual Studio中的同一個解決方案中導入相同的文件并提供相同的密碼,則會被接受 .
Update 2: 如果我使用Visual Studio 2008生成的舊臨時密鑰,可以將其成功導入到我們服務器的證書庫中;我無法導入我使用Visual Studio 2010新創建的任何臨時密鑰 .
Update 3: 我能夠在服務器上的Visual Studio中創建一個新的"temporary key",并在服務器和工作站上使用它來簽署ClickOnce清單 . 我只是無法對它做出合理的解釋 - 兩臺計算機都是64位,我在兩者上都使用Visual Studio 2010 . 兩者都安裝了v3.5和v4(4.0.30319).NET框架 . 我的工作站是Windows 7專業版,服務器是Windows Server 2008 R2標準版 .