これまでに見つかったものは次のとおりです。もちろん、それは「ベストプラクティス」ではありませんが、それはスタートです:
完全な信頼を必要とする XBAP プロジェクトへの署名。
サービスとして実行されている CI サーバーで問題を解決する方法を見つけたら、PFX は正常に動作しています。
XBAP プロジェクトを ASP.NET Web アプリケーションに発行します。
2.1 これは「リリース」構成ビルドで自動化する必要がありますか?
2.2 パブリッシュされた出力は Bin ディレクトリに入れるべきですか?
2.3 .deploy ファイル拡張子を避け、可能であれば既存のアセンブリを再利用すべきですか?
Bin にコピーすると、IIS7 の RequestFilteringModule で問題が発生したため、使用しませんでした。
発行する代わりに、AfterBuild ターゲットで出力を ASP.NET Web アプリのディレクトリにコピーします。これは Subversion によって無視されますが、Web デプロイまたは wix プロジェクトでは無視されます。したがって、必要なもの (dll、exe、マニフェスト、xbap) をコピーしてから、MSBuild マジックを使用して名前を .deploy 拡張子に変更します。これは、一部のクライアントが .exe または .dll のダウンロードをブロックする可能性があるためです。
<Target Name="AfterBuild">
<CallTarget Targets="CopyOutputToDeployWebDir" />
</Target>
<Target Name="CopyOutputToDeployWebDir">
<CreateProperty Value="..\Path\To\Application\Dir">
<Output TaskParameter="Value" PropertyName="DeployWebDir" />
</CreateProperty>
<RemoveDir Directories="$(DeployWebDir)" />
<MakeDir Directories="$(DeployWebDir)" />
<ItemGroup>
<DeployWebFiles Include="$(OutputPath)*.dll;$(OutputPath)*.exe;$(OutputPath)*.manifest;$(OutputPath)*.xbap" />
</ItemGroup>
<Copy SourceFiles="@(DeployWebFiles)" DestinationFolder="$(DeployWebDir)" />
<ItemGroup>
<RenameFiles Include="$(DeployWebDir)*.dll;$(DeployWebDir)*.exe" />
</ItemGroup>
<Move SourceFiles="@(RenameFiles)" DestinationFiles="%(RenameFiles.FullPath).deploy" />
</Target>
ASP.NET Web アプリケーションから使用するための完全な信頼を必要とする XBAP の展開。
現時点では、信頼されたルート証明書ストアと信頼された発行元証明書ストアの両方に署名付きキーをインストールする必要があるようです。
XBAP プロジェクトのバージョニング。
ASP.NET Web アプリケーション バージョン (この場合は AssemblyFileVersion 属性) と同じ XBAP アプリケーション バージョンが必要なため、通常の ApplicationVersion プロパティ アプローチをバイパスし、すべてのアセンブリで使用される共有 AssemblyInfo ファイルから上書きして終了しました。製品:
<!-- Note that this value is overridden in BeforeBuild target -->
<ApplicationVersion>0.0.0.0</ApplicationVersion>
<!-- ... -->
<Target Name="BeforeBuild">
<CallTarget Targets="SetApplicationVersion" />
</Target>
<!-- Always set application version to product version -->
<Target Name="SetApplicationVersion">
<UpdateVersion Attribute="AssemblyFileVersion" AssemblyInfo="..\ProductAssemblyInfo.cs">
<Output PropertyName="ApplicationVersion" TaskParameter="Version" />
</UpdateVersion>
</Target>
UpdateVersion は、AssemblyInfo ファイルのバージョン属性値を読み書きできるカスタム MSBuild タスクです。同様のことを行うためにウェブ上で何かを書いたり見つけたりすることは難しくありません。