다른 것들 중에서도 솔루션의 다른 프로젝트에 포함 된 리소스를 추가하는 사용자 지정 MSBuild 작업이 있습니다. 리소스를 추가 한 후 해당 프로젝트를 빌드하고 싶지만 Visual Studio 내에서이 프로젝트를 수행 할 수 없다는 것을 알게되었습니다.다른 솔루션 프로젝트를 빌드하는 MSBuild 작업은 VS에서 실패하지만 MSBuild.exe 명령 줄과 함께 작동합니다.
테스트를 위해 Silverlight 솔루션의 웹 프로젝트에서 사용자 지정 작업을 완전히 제거하고 간단한 AfterBuild 대상을 다시 정의했습니다. 대상은 솔루션의 실버 라이트 응용 프로그램 프로젝트를 구축 할 수있는 MSBuild에서 작업을 사용하고, 다음과 같습니다
<Target Name="AfterBuild">
<PropertyGroup>
<LinkedProject>..\SilverlightApplication1\SilverlightApplication1.csproj</LinkedProject>
</PropertyGroup>
<MSBuild Condition="'$(LinkedProject)' != '' "
Projects="$(LinkedProject)"
Targets="Build"
Properties="CustomFlag=true" >
</MSBuild>
</Target>
이상한 점은 명령 줄에서 MSBuild를를 사용하는 경우이 아직 시각에서 작동하지 않는, 완벽하게 작동한다는 것입니다 웹 프로젝트를 빌드 할 때의 스튜디오. 나는 이것이 일종의 Silverlight 문제일지도 모른다고 생각하고 대신 작업을 .NET 클래스 라이브러리 프로젝트로 만들었지 만 결과는 동일했지만 명령 행에서 작동했지만 VS 내에서는 작동하지 않았습니다. VS에서는 실제로 오류가 없습니다. Csc 작업이 어셈블리를 컴파일하지 않고 출력을 생성하지 않는 것입니다.
Visual Studio에서이 기능을 사용하려면 어떻게해야합니까?
나는 Diagnostic의 자세한 정보를 사용했지만 Csc 작업이 출력을 생성하지 않는 이유는 알려주지 않습니다. 테스트 대상에서 빌드 대상을 호출 할 때 사용자 지정 속성을 사용했습니다. "CustomFlag"라고했는데 MSBuild 작업이 이미 빌드 된 경우에도 프로젝트를 빌드하기에 충분할 것이라고 생각했습니다. CoreCompile 타겟이 호출되고 Csc 태스크조차도 아무 것도하지 않습니다. 또한 테스트에서 웹 응용 프로그램 프로젝트의 AfterBuild 대상을 사용하고 있지만 CoreBuild의 끝 부분에 삽입되는 .targets 파일을 사용하고 있습니다. –