如何根据某个文件的内容动态更改AssemblyName?
例如,我有一个名为“AssemblyBaseName.txt”的文件,其中包含“Abcd”字符串我希望我的汇编DLL / EXE名称为Abcd.Common.dll,其中“Common”是常量。
我试过像这样使用ReadLinesFromFile
<Target Name="Build">
<ItemGroup>
<AssemblyBaseNameFile Include="Test.txt"/>
</ItemGroup>
<ReadLinesFromFile File="@(AssemblyBaseNameFile)">
<Output TaskParameter="Lines" ItemName="AssemblyBaseName" />
</ReadLinesFromFile>
<Message Text="AssemblyBaseName: $(AssemblyBaseName)" />
</Target>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{FEE469DB-44BD-4CD9-BA08-91F1DFDE9679}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Common</RootNamespace>
<AssemblyName Condition=" '$(AssemblyName)' == '' ">$(AssemblyBaseName).Common</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
但没有成功。
答案 0 :(得分:2)
您的目标更改了$(AssemblyBaseName)的值,但仅在使用原始值$(AssemblyBaseName)设置静态声明的$(AssemblyName)的值之后,因为在执行任何目标之前处理静态属性。您还需要动态(在目标内)重新定义$(AssemblyName)。此外,您已覆盖“构建”目标。我不确定这个程序集将如何构建,你需要使用一个不同命名的目标,并确保它在正常构建管道使用$(AssemblyName)之前执行。