輸出路徑:如何我使用的<code>BeforeBuild</code>事件下面的代碼來修改PreBuildEvent或BeforeBuild
<XmlPeek XmlInputPath="SiteSettings.config" Query="appSettings/add[@key='cProjectNumber']/@value">
<Output TaskParameter="Result" ItemName="value" />
</XmlPeek>
<PropertyGroup>
<ProjectNumber>[email protected](value)</ProjectNumber>
</PropertyGroup>
,然後讓我訪問$(ProjectNumber)
其中將包含像1234
項目數。然後我使用它來包含一些項目特定的覆蓋類。這工作正常。
我的問題是訪問BeforeBuild
事件之外的ProjectNumber
。
我想要做的是修改該項目的<OutputPath>bin\</OutputPath>
,使其進入項目特定的文件夾(所以我知道哪些構建完成)。我試過<OutputPath>bin\$(ProjectNumber)\</OutputPath>
,但我認爲我的財產超出了範圍,因爲它是空的。
有誰知道一種方法來實現我想要的?
編輯:這是我與聲明全局變量的嘗試:
<Project ToolsVersion="4.0" DefaultTarget="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectNumber></ProjectNumber>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\$(ProjectNumber)\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Target Name="BeforeBuild">
<XmlPeek XmlInputPath="SiteSettings.config" Query="appSettings/add[@key='cProjectNumber']/@value">
<Output TaskParameter="Result" ItemName="value" />
</XmlPeek>
<PropertyGroup>
<ProjectNumber>[email protected](value)</ProjectNumber>
</PropertyGroup>
<ItemGroup>
<Compile Include="Accounts\$(ProjectNumber)\Objects\MyObject.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
</Target>
<Target Name="AfterBuild">
<Message Text="Proj:$(ProjectNumber)" Importance="High" />
</Target>
</Project>
AfterBuild具有打印正確的項目數的消息,但<OutputPath>bin\$(ProjectNumber)\</OutputPath>
沒有正確的值。
這聽起來很有希望。我試着按照上面的建議設置' bin \ $(ProjectNumberBin)\ ',但它似乎沒有工作。我不確定'Target Name ='All''會配合在哪裏。 –
webnoob
Target'All'只是我給出的,表明它可以在'BeforeBuild'之外的任何地方使用'BeforeBuid'設置的值。在你的情況下,目標' bin \ $(ProjectNumber)\ '目前應該等同於我的示例的所有目標。 –
RinoTom
您能否看到我的編輯並讓我知道您的想法。我可以看到唯一的區別是項目線聲明,但我嘗試過沒有成功。 – webnoob