2012-04-09 54 views
1

我已經Silverlight項目安排如下:Silverlight的MSBuild任務 - 執行命令行後XAP複製到的ClientBin

  • 實例
    • 的Silverlight

        • 調試
    • ExampleCode
      • {多個子目錄}
  • Silverlight.Web
      • 調試
        • 的ClientBin
          • Silverlight.Web.xap

下的代碼{多個子目錄}包含在Silverlight的DLL和編譯的,但是我也希望包括這些文件xap文件中的「內容」。思考.NET控件的演示應用程序,這些應用程序向您演示演示,還介紹用於實現它的C#/ xaml代碼。這是我想要做的。

  • 我不能選擇包括爲內容,因爲它們已被包含在編譯
  • 我不能包括的文件兩次,編譯一個和內容等爲VS2010不會放過你的。

我想包括輸出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文件之前生成後事件被觸發之前。

有沒有人知道我可以運行一個MSbuild任務或命令行後生成事件 xap文件複製到ClientBin?

回答

2

您可以通過將文件添加到您的Silverlight項目的AfterCompile目標中的XapFilesInputCollection來解決此問題。但請注意,在Visual Studio中編譯時,直接在項目中包含bin文件夾可能會導致訪問被拒絕錯誤。

<Target Name="AfterCompile"> 
    <ItemGroup> 
    <XapFilesInputCollection Include="$(SolutionDir)Examples\Silverlight\Bin\$(Configuration)\ExampleCode"/> 
    </ItemGroup> 
</Target> 
+0

謝謝,讓我試試這個 – 2012-04-10 06:23:37

+2

這不起作用 – Jupaol 2013-04-02 22:49:37