0
我嘗試以下的MSBuild腳本(使用最不相干的代碼刪除):在msbuild中,如何在Csc任務資源參數中指定可選的「標識符」參數?
<ItemGroup>
<EmbeddedResource Include="$(ResourceLocation)logom.ico">
<Id>resources.icon.m</Id>
</EmbeddedResource>
<EmbeddedResource Include="$(ResourceLocation)logo.png">
<Id>resources.image.banner</Id>
</EmbeddedResource>
</ItemGroup>
<Target Name="build" Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe">
<ItemGroup>
<EmbeddedResource>
<TaggedResource>$([System.String]::Copy('$(ResourceLocation)%(Filename)%(Extension),%(Id)'))</TaggedResource>
</EmbeddedResource>
</ItemGroup>
<Csc
Sources="@(Compile)"
Resources="@(EmbeddedResource->'%(TaggedResource)')"
/>
</Target>
導致這樣的輸出(I修剪一些無關輸出):
BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe /resource:"res\logom.ico,resources.icon.m" /resource:"res\logo.png,resources.image.banner"
我試圖採取Csc任務的資源參數的可選「標識符」參數的優點。 我認爲它失敗了,因爲輸出得到每個項目的引號,所以Csc任務認爲整個事情就是文件名。如何指定不帶引號的這些資源值&參數對?
這是我的第一個msbuild腳本,所以我可以很容易地離開目標。
我解決了這個問題。對於那些感興趣的,我不得不將ItemGroup Id標籤更改爲「LogicalName」 – marcaroni