我一直試圖更新ApplicationVersion屬性在我的csproj file.witch工作正常;我添加了一個運行自定義任務的目標,以從我的assemblyinfo.cs中提取AssemblyFileVersion;這是毫無疑問的。 但是,當我想使用我更新的ApplicationVersion來確定將我的新構建文件放在哪裏時,我得到屬性中設置的默認值。csproj MSBuild更新屬性
<PropertyGroup>
...
<ApplicationVersion>1.0.0.0</ApplicationVersion>
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\media-converter-BUILD\debug\$(ApplicationVersion)\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>..\media-converter-BUILD\debug\$(ApplicationVersion)\MediaConverter.XML</DocumentationFile>
</PropertyGroup>
我的目標
<UsingTask AssemblyFile="GetAssemblyFileVersion.dll" TaskName="GetAssemblyFileVersion.GetAssemblyFileVersion" />
<Target Name="MainAfterCompile">
<CallTarget Targets="AfterCompile" />
<CallTarget Targets="VerifyParam" />
</Target>
<Target Name="AfterCompile">
<GetAssemblyFileVersion strFilePathAssemblyInfo="Properties\AssemblyInfo.cs">
<Output TaskParameter="strAssemblyFileVersion" PropertyName="ApplicationVersionModded" />
</GetAssemblyFileVersion>
<PropertyGroup>
<ApplicationVersion>$(ApplicationVersionModded)</ApplicationVersion>
</PropertyGroup>
</Target>
<Target Name="VerifyParam">
<Message Text="New $(ApplicationVersionModded)" Importance="high"/>
<Message Text="Old Updated $(ApplicationVersion)" Importance="high"/>
</Target>
的GetAssemblyFileVersion.dll我或多或少從一些後我發現在互聯網上偷了,就不能再次找到它,這樣我就可以」添加一個鏈接,對不起。
我爲什麼不起作用的理論是PropertyGroups中的變換和參數在InitailTagets和DefaultTargets都運行之前被渲染。還有的將我的計劃行不通
但如果有人知道的一種方式,使其工作,我會感激這裏吧
Thanks mate;你只需要用一天的時間就可以爲我節省時間。 –