1

私は次のように配置されたSilverlightプロジェクトを持っています:

    • Silverlight
      • 置き場
        • デバッグ
    • ExampleCode
      • {複数のサブディレクトリ}
  • Silverlight.Web
    • 置き場
      • デバッグ
        • ClientBin
          • Silverlight.Web.xap

{複数のサブディレクトリ}の下のコードはSilverlightDLLに含まれており、コンパイルされていますが、これらのファイルも「コンテンツ」としてxapファイルに含めたいと思います。デモだけでなく、それを実現するためのC#/xamlコードも表示する.NETコントロールのデモアプリケーションについて考えてみてください。これが私がやろうとしていることです。

  • コンパイルとしてすでに含まれているため、コンテンツとして含めるを選択できません
  • VS2010では許可されないため、ファイルを2回インクルードして、一方をコンパイルし、もう一方をコンテンツ化することはできません。

出力xapファイルのExamples/Silverlight/ExampleCodeフォルダーの下にあるすべてのファイル/フォルダーを含めたいと思います。これを実現するために、Silverlight.Webプロジェクトでビルド後のイベントを試みました。構文は次のとおりです。

"$(SolutionDir)..\Lib\7Zip\7z.exe" a  -tzip 
    "$(ProjectDir)ClientBin\Silverlight.Web.xap" 
    "$(SolutionDir)Examples\Silverlight\Bin\Debug\ExampleCode"

これをコンソールウィンドウで実行すると、完全に機能します。xapファイルが更新されます。ただし、Silverlight.Webのビルド後のイベントから実行しても、何も起こりません(失敗はなく、何も起こりません)。

xapファイルが作成される前にビルド後のイベントが発生すると思います。

xapファイルがClientBinにコピーされた、引数を使用してMSbuildタスクまたはコマンドラインのビルド後イベントを実行する方法を知っている人はいますか?

4

1 に答える 1

2

これを回避するには、SilverlightプロジェクトXapFilesInputCollectionのターゲットにファイルを追加します。AfterCompileただし、binフォルダーをプロジェクトに直接含めると、VisualStudioでコンパイルするときにアクセス拒否エラーが発生する可能性があることに注意してください。

<Target Name="AfterCompile">
  <ItemGroup>
    <XapFilesInputCollection Include="$(SolutionDir)Examples\Silverlight\Bin\$(Configuration)\ExampleCode"/>
  </ItemGroup>
</Target>
于 2012-04-09T22:27:30.960 に答える