我需要能夠覆蓋輸出程序集的名稱。MSBuild覆蓋輸出文件名
有一個文件包含前綴appid。我需要讀取該文件以獲取此前綴,然後將其用於裝配名稱。即,程序集名稱engine.dll和appid包含slot_113。最終輸出應該是engine_slot113.dll。
我正在考慮創建一個單獨的.targets文件,我可以將其包含到任何需要該行爲的.csproj文件中。
我發現任務ReadFileLines讀取文件包含appid,但我不知道如何覆蓋輸出名稱。
我需要能夠覆蓋輸出程序集的名稱。MSBuild覆蓋輸出文件名
有一個文件包含前綴appid。我需要讀取該文件以獲取此前綴,然後將其用於裝配名稱。即,程序集名稱engine.dll和appid包含slot_113。最終輸出應該是engine_slot113.dll。
我正在考慮創建一個單獨的.targets文件,我可以將其包含到任何需要該行爲的.csproj文件中。
我發現任務ReadFileLines讀取文件包含appid,但我不知道如何覆蓋輸出名稱。
我不認爲有一種方法來重寫它,但在後期構建操作重命名它應該是非常可能的。使用PostBuildEvent。
您可以使用MSBuild Copy Task輕鬆實現此目的。 讓我們假設你已經提取後綴屬性$(AssemblyNameSuffix)
並指定裝配文件項目組@(AssemblyDllFiles)
,所以:
RenameDlls.targets
文件(如下圖所示的內容)testfile.txt
msbuild.exe RenameDlls.targets
testfile.txt
將被複製爲testfile_SUFFIX.txt
注意:您可以將這種動作的多個文件以及
的MSBuild目標:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Default">
<Target Name="Default" DependsOnTargets="CreateItems;CopyItems"/>
<PropertyGroup>
<AssemblyNameSuffix>SUFFIX</AssemblyNameSuffix>
</PropertyGroup>
<Target Name="CreateItems">
<ItemGroup>
<AssemblyDllFiles Include="testfile.txt"/>
</ItemGroup>
</Target>
<Target Name="CopyItems"
Inputs="@(AssemblyDllFiles)"
Outputs="@(AssemblyDllFiles->'.\%(RecursiveDir)%(Filename)_$(AssemblyNameSuffix)%(Extension)')">
<Message Text="@(AssemblyDllFiles->'%(FullPath)', '%0a%0d')"
Importance="low"/>
<Copy SourceFiles="@(AssemblyDllFiles)"
DestinationFiles="@(AssemblyDllFiles->'.\%(RecursiveDir)%(Filename)_$(AssemblyNameSuffix)%(Extension)')"
SkipUnchangedFiles="true"/>
</Target>
</Project>
,看起來很有趣,goint試試 –
但我還是希望能找到一種方式來覆蓋。我花了幾個小時沒有成功。 –
@alexanderb:您是否嘗試過使用MSBuild目標的解決方案?至少它適合我 – sll