這是我們迄今爲止發現的。當然,這不是'最佳實踐',但它是一個開始:
簽署需要完全信任的XBAP項目。
一旦我想出如何將CI服務器作爲服務運行,如何運行solve the issue,PFX工作正常。
將XBAP項目發佈到ASP.NET Web應用程序中。
2.1這應該在「發佈」配置版本上自動執行嗎?
2.2發佈的輸出是否應該進入Bin目錄?
2.3我們是否應該避免。如果可能,部署文件擴展名並重新使用現有的程序集?
複製到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項目。
我們希望同樣的XBAP應用程序版本爲我們的ASP.NET Web應用程序的版本(在本例中,屬性的AssemblyFileVersion),因此,我們最後繞過正常ApplicationVersion財產的做法,從我們覆蓋它集信息文件共享其所使用的產品中的所有組件:
<!-- 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是一個自定義的MSBuild任務,可以閱讀或在集信息寫入文件的版本屬性值。在網上寫或找些東西來做類似的事情並不難。
這對我來說是非常有用的信息,但是,我正在爲MSBuild實際的「發佈」目標努力。你如何調用簽名XBAP和依賴文件的Publish例程? – grenade 2010-08-11 07:00:45