我有一個需要自動生成附屬程序集的過程。具體來說,這是爲WPF和Resx和BAML資源的結合。使用MsBuild生成和編譯.resources文件
我有一個可以工作的構建腳本,但它需要手動添加我想與BAML資源結合使用的.resources文件。 IOW,每次添加.Resx資源時,我都必須添加到構建腳本中。不爽!
目前我正在手動運行集鏈接和腳本如下所示:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Adds the build action 'LocBamlCsv' -->
<ItemGroup>
<AvailableItemName Include="LocBamlCsv" />
</ItemGroup>
<Target Name="CreateSatelliteAssemblies"
DependsOnTargets="$(CreateSatelliteAssembliesDependsOn)">
<!-- Locbaml needs the runtime assemblies in the intermediate dir -->
<Copy SourceFiles="$(ProjectDir)..\Tools\LocBaml.exe"
DestinationFolder="$(OutputPath)" />
<!-- generate a .resources file for .csv merged output -->
<Exec Command="LocBaml /generate ..\..\$(IntermediateOutputPath)$(TargetName).g.$(UICulture).resources /trans:%(LocBamlCsv.FullPath) /out:../../$(IntermediateOutputPath) /cul:%(LocBamlCsv.Culture)"
WorkingDirectory="$(OutputPath)"
Outputs="$(OutputPath)%(LocBamlCsv.Culture)\$(TargetName).$(UICulture).dll" />
<!-- Generate the resource assembly by merging all .resources files -->
<!-- NOTE: Explicitly add any resource files here -->
<Exec Command="al /template:$(TargetName).exe /culture:%(LocBamlCsv.Culture) /out:%(LocBamlCsv.Culture)\$(TargetName).resources.dll /embed:$(TargetName).g.%(LocBamlCsv.Culture).resources /embed:$(TargetName).Properties.Resources.%(LocBamlCsv.Culture).resources"
WorkingDirectory="$(InterMediateOutputPath)"
/>
</Target>
</Project>
如前所述它的工作原理。但如果有一些使用通配符的方法(即$(TargetName).s。%(LocBamlCsv.Culture).resources),那麼調用al的最後一個命令將更容易處理。
我已經嘗試了很多東西,使用構建過程顯然在錯誤的時間點燃,最終無法找到文件。
你總是可以寫掃描目錄* .RES或什麼,並生成構建腳本的腳本。 – 2009-06-14 03:08:14
傑夫如何做到這一點的任何鏈接?我不熟悉msbuild,我不知道如何獲取文件並將它們傳遞到鏈接器路徑。另一個問題是部分不起作用(即使使用硬編碼的文件名 - 大概是因爲構建過程中這些文件可用的時間是錯誤的)顯式命令的作用。 –
2009-06-14 03:15:43