다음은 F # 프로젝트의 맨 아래에 붙여 넣을 때 제안되는 효과입니다 (c:\temp\foo.txt
이있는 경우 THE_FILE_EXISTS
의 경우 #define
이 추가됨). MSBuild를 사용하기 때문에 C++ 프로젝트에는 사소한 수정 만 필요할 것으로 예상됩니다. 이것은 아마도 약간의 해커 일 것입니다, 그것은 내가 일하는 첫 번째 일입니다.
<UsingTask TaskName="SeeIfFileExists" TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Path ParameterType="System.String" Required="true" />
<ItExists ParameterType="System.Boolean" Output="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
ItExists = System.IO.File.Exists(Path);
]]>
</Code>
</Task>
</UsingTask>
<Target Name="SeeIfFileExistsTarget" BeforeTargets="PrepareForBuild">
<SeeIfFileExists Path="c:\temp\foo.txt" >
<Output TaskParameter="ItExists" ItemName="TheFileExists" />
</SeeIfFileExists>
<PropertyGroup>
<DefineConstants Condition="'@(TheFileExists)'=='True'"
>$(DefineConstants);THE_FILE_EXISTS</DefineConstants>
</PropertyGroup>
</Target>
은 그냥
<PropertyGroup>
<DefineConstants Condition="Exists('c:\temp\foo.txt')"
>$(DefineConstants);THE_FILE_EXISTS</DefineConstants>
</PropertyGroup>
아마 충분하지만, 거의 섹시한 아니라는 것을 나에게 발생했습니다.
감사합니다. 결국 첫 번째 버전은 작동하지 않지만 두 번째 버전은 치료할 수 있습니다. – ngoozeff