0

ビルド プロパティとして数値を渡すことができるように、ビルドをセットアップしました。

msbuild MyProject.sln /t:Build /p:Configuration="Debug" /p:SomeNumber="123"

MSBuild プロジェクトはファイルを生成し、次の方法で追加します。

<Compile Include="$(SomeFileContainingSomeNumber)" />

このファイルは、SomeNumberが指定されている場合にのみ生成されます。

番号を変更または省略してもう一度ビルドすると、MSBuild プロジェクトが新しい値で再ビルドされません。これは、プロジェクト ファイルが変更されていないためだと思います。

SomeNumberプロパティを変更すると再構築がトリガーされるようにプロジェクトを設定するにはどうすればよいですか?

4

1 に答える 1

1

MSBuild 3.5 を使用しています。Conditionaに aを付けるBeforeBuild Targetと、その実行が妨げられるようです。ConditionからTargetターゲット内の個々のアクションに移動すると、目的の動作を得ることができました。

SomeNumber以下を使用して、プロパティが変更されたかどうかに関係なく、MSBuild を毎回適切にコンパイルすることができました。タイムスタンプが変化しているため、内容が変更されたかどうかにかかわらず、プロジェクトはSomeFile.cs毎回再構築されている可能性があります。

<PropertyGroup>
    <SomeFile>SomeFile.cs</SomeFile>
</PropertyGroup>
<Target Name="BeforeClean">
    <Delete Files="$(SomeFile)" />
</Target>
<Target Name="BeforeBuild">
    <WriteLinesToFile Condition="'$(SomeNumber)' == ''" File="$(SomeFile)" Lines="//" Overwrite="true" />
    <WriteLinesToFile Condition="'$(SomeNumber)' != ''" File="$(SomeFile)" Lines="$(SomeNumber)" Overwrite="true" />
</Target>
<ItemGroup>
    <Compile Include="$(SomeFile)" />
</ItemGroup>

何も入れなかったり空白を入れたりするとファイルが削除Lines="//"されるため、 が必要です。WriteLinesToFile

于 2012-10-08T14:49:47.080 に答える