5

C# で Outlook プラグインを作成しています。VS で問題なくビルドされ、一時的な pfx 証明書で署名されています。ビルド プロセスを Jenkins に入れ、自動的に実行したいと考えています。

MSBuild で VS ソリューションを実行しようとしました。開発マシンでは問題なく動作しますが、Jenkins ではエラーが発生します。

次のキー ファイルをインポートできません: OutlookPlugin_TemporaryKey.pfx。キー ファイルは、パスワードで保護されている場合があります。これを修正するには、証明書を再度インポートするか、次のキー コンテナー名で証明書を厳密な名前の CSP に手動でインストールしてください: VS_KEY_A688DC31A30F3EF1

自動ビルドの pfx パスワードを指定する方法がわかりません。または、署名プロセスを自動化します。

私たちが見つけた解決策の 1 つは、同じマシン上の VS で、自動化されたプロセスと同じユーザーとしてプロジェクトを開き、パスワードを入力することでした。おそらく、Jenkins が毎回ワークスペースを一掃するため、これは機能しません。署名せずにコンパイルしてから署名しようとすると、ClickOnce アセンブリに署名する必要があると不平を言います。Office プラグインは ClickOnce を使用する必要があるようです。

では、ビルド ファイルのどこかに pfx パスワードを指定するにはどうすればよいでしょうか。

VS 2010 と Office ツールを使用しています。

4

2 に答える 2

1

パスワードをプロパティとして含むファイル (ローカルまたは既知のネットワーク共有上) を作成し、MSBuild スクリプトからそれを参照します。ビルド アカウントのみがそのファイルを読み取ることができるように、ファイルにアクセス許可を設定します。ビルド マシンへの管理者アクセス権を持つユーザー、またはビルド アカウントのパスワードを知っているユーザーは、パスワードを読み取ることができることに注意してください。最終的に、ここに特効薬はありません。MSBuild がパスワードを検索/復号化/何でもできる場合、人間もできるようになります。

秘密鍵のセキュリティが心配な場合は、署名を別の手順に分けて、秘密鍵をスマートカードに保存することを検討してください。やり過ぎかもしれませんが、一般的に利用できる最も優れた保護機能の 1 つです。

それ以外の場合は、パスワードをプロパティとして追加するだけです。ご存じのとおり、プロジェクト ファイルは単なる MSBuild スクリプトです。例えば:

<PropertyGroup>
    <PfxPassword>password</PfxPassword>
</PropertyGroup>

<!-- Sample sign task -->
<SignTask>
    <File>MyOutlookPlugin.dll</File>
    <KeyFile>OutlookPlugin_TemporaryKey.pfx</KeyFile>
    <Password>$(PfxPassword)</Password>
</SignTask>

MSBuild プロパティの詳細については、 http: //msdn.microsoft.com/en-us/library/ms171458(v=vs.80).aspx を参照してください。

于 2012-09-11T08:56:24.320 に答える
1

MSBuild と Bamboo を使用してプロジェクトをビルドする際に問題がありました。私たちにとっての修正は、.csproj ファイルから次の行を削除することでした。

<AssemblyOriginatorKeyFile>applicationcert.pfx</AssemblyOriginatorKeyFile>
于 2015-07-09T04:11:27.037 に答える