2

こんにちは。CruiseControl.NETなどの継続的インテグレーションサーバーと、通常のビルド/リリースプロセスに、完全な信頼を必要とするWPF WebベースアプリケーションまたはXAMLブラウザーアプリケーション(XBAP)を実装したユーザーからのアドバイスをお待ちしています。

具体的には、次のことに関心があります。

  1. 完全な信頼を必要とするXBAPプロジェクトに署名します
    PFXファイルは進むべき道ですか、それともCIサーバーを使用する場合のより良いアプローチですか?
    (昨日この問題が発生しました)。

  2. XBAPプロジェクトをASP.NETWebアプリケーションに公開します
    2.1これは「リリース」構成ビルドで自動化する必要がありますか?
    2.2公開された出力はBinディレクトリに入れる必要がありますか?
    2.3 .deployファイル拡張子を避け、可能であれば既存のアセンブリを再利用する必要がありますか?
    (ASP.NET Webアプリプロジェクトですでに使用されているクラスライブラリは多数あります)

  3. ASP.NETWebアプリケーションから使用するために完全な信頼を必要とするXBAPを展開します

  4. XBAPプロジェクトのバージョン管理
    ASP.NET Webアプリプロジェクトの残りのアセンブリと同じバージョンを使用する必要がありますか?

背景情報:

  • XBAPプロジェクトは、ASP.NETWebアプリで使用するレポートを設計するためのものです。それは製品の統合された部分です。
  • XBAPおよびWebアプリケーションプロジェクトをコンパイルした後、Web展開プロジェクトを使用し、その出力をWixプロジェクトで使用してMSIインストーラーを構築します。
  • CIにはCruiseControl.NET、RCSにはSubversion、MSBuildを使用してすべてを接着し、ビルド/リリースプロセス全体が自動化されているため、そのままにしておく必要があります。

アドバイスをいただければ幸いです。

4

1 に答える 1

1

これまでに見つかったものは次のとおりです。もちろん、それは「ベストプラクティス」ではありませんが、それはスタートです:

完全な信頼を必要とする 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 タスクです。同様のことを行うためにウェブ上で何かを書いたり見つけたりすることは難しくありません。

于 2009-10-26T06:36:20.073 に答える