1

私はこの目標を持っています

<Target Name = "AddLocalCertificate">       
    <MSBuild.ExtensionPack.Security.Certificate TaskAction="Add" FileName="$(CertificateLocation)" CertPassword="$(CertificatePassword)">           
        <Output TaskParameter="Thumbprint" PropertyName="CertificateHash"/>             
    </MSBuild.ExtensionPack.Security.Certificate>
</Target>

そして別のターゲットでは、このバインディングステートメント

<MSBuild.ExtensionPack.Web.Iis7Binding
  CertificateHash="$(CertificateHash)" 
  TaskAction="Add" MachineName="$(MachineName)" Name="$(SiteName)" BindingInformation="*:$(HttpsPort):$(SiteName)" BindingProtocol="https"/>

ただし、ターゲットを実行するとエラーが発生します

証明書を使用してバインディングを作成しています: ストア 'MY' の拇印 'DBE4964B4C4D0F185E8B1D421D736390AE586EBF' C:\Projects\RC19_Release2\ExternalBinaries\MSBuildGlobalFiles\ManageWebsite.targets(154,3): エラー: COMException: 指定されたログオン セッションが存在しません。すでに終了している可能性があります。(HRESULT からの例外: 0x80070520)\r C:\Projects\RC19_Release2\ExternalBinaries\MSBuildGlobalFiles\ManageWebsite.targets(154,3): エラー:

IIS を見ると、サイトが作成され、バインディングが存在しますが、証明書が見つからないようです。IIS の「サーバー証明書」を見ると、証明書が表示されません。

MMC -> 証明書スナップインを実行して [現在のユーザー] に移動すると、そこに自分の証明書が表示されます。

IIS/msbuild 内からその証明書にアクセスする方法、または IIS が満足できるように msbuild で証明書を正しい場所に作成する方法を教えてください。

msbuild 拡張機能のヘルプ ページはhttp://www.msbuildextensionpack.com/help/4.0.5.0/html/45763eac-8f14-417d-9b27-425161982ffe.htmですが、あまり役に立ちませんでした。

ありがとう

4

1 に答える 1

6

まあ、私はそれを機能させました...明らかに誰も気にしませんが、私:D

実質的な変更は、証明書の追加タスクに Exportable="True" MachineStore="True" を追加することでした

<MSBuild.ExtensionPack.Security.Certificate TaskAction="Add" Exportable="True" MachineStore="True" FileName="$(CertificateLocation)" CertPassword="$(CertificatePassword)">         
        <Output TaskParameter="Thumbprint" PropertyName="CertificateHash"/>             
    </MSBuild.ExtensionPack.Security.Certificate>   

そして、再び世界のすべてがうまくいきます。

于 2012-05-10T10:22:22.743 に答える