여러 프로젝트가있는 솔루션이 있으며 솔루션 수준의 공통 파일에서 한 번 정의 된 공유 속성 집합에 모두 액세스 할 수있게하고 싶습니다.가져온 속성을 기반으로 한 MSBuild 조건
이것은 주로 아래 코드를 사용하여 잘 작동하며 BeforeBuild 대상에서 가져온 속성을 사용할 수 있습니다. 그러나 문제는 내가 가져온 속성을 조건에 사용할 수 없다는 것입니다.
내 프로젝트 파일에서<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CommonSettingsTarget">
<PropertyGroup>
<MyCustomProperty>Sample</MyCustomProperty>
</PropertyGroup>
</Target>
</Project>
내가 가진 : 위의에서
<Project ToolsVersion="14.0" DefaultTargets="Build" InitialTargets="CommonSettingsTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(SolutionDir)CommonSettings.targets" />
<ItemGroup>
<EmbeddedResource Include="EmbeddedDocument.txt" Condition=" '$(MyCustomProperty)' == 'Sample' " />
</ItemGroup>
<Target Name="BeforeBuild">
<Message Text="MyCustomProperty='$(MyCustomProperty)'" Importance="high" />
</Target>
</Project>
, 내 수입을 볼 수 있습니다
은 그래서 솔루션 폴더에 CommonSettings.targets 파일에 다음 한 속성은 출력 창에 "MyCustomProperty = 'Sample'"로 표시됩니다. 그러나 조건의 일부로 사용되는 경우 (포함 된 리소스를 선택적으로 포함하기 위해) 조건이 충족되지 않습니다.가져온 속성을 조건과 함께 사용할 수있는 방법이 있습니까? 사용자의 상태가 평가 될 때 CommonSettingsTarget
아직 실행되지 않았으며, 따라서 MyCustomProperty
아직 정의되지 않은 해당 ItemGroup
로서
다른 조언 : VS 2017/MSbuild 15로 전환하면 가져온 파일'Directory.Build.props'의 이름을 지정하면 해당 레벨 아래의 모든 프로젝트에 자동으로 가져옵니다. –