프로젝트가 솔루션 용으로 만들어진 것처럼 들리므로 솔루션 외부에서 빌드를 시도 할 때 솔루션이 모든 프로젝트의 위치를 결정하는 풀인 것처럼 중단됩니다.
명령 줄에서 솔루션을 빌드하는 경우 작동합니까?
msbuild.exe solutionname.sln
그렇다면 Visual Studio를 닫고 Notepad ++를 열고 일부 XML 편집을 시작할 준비를하십시오!
솔루션 루트 폴더에서 상대적 경로를 선호하는 절대 경로의 사용을 제거하십시오.
첫째, 만들기 공통 속성 "Common.props"라는 입대의 루트 폴더에 다음과 같은 마크 업 추가, 그리고
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<SlnRoot>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Common.props))</SlnRoot>
</PropertyGroup>
</Project>
을 모든 구성원 프로젝트 파일이 마크 업을 추가 할 수 있습니다.
<PropertyGroup>
<CommonPropsFolder>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory) ,Common.props))</CommonPropsFolder>
</PropertyGroup>
<Import Project="$(CommonPropsFolder)\Common.props" />
는
지금 .csproj 영향을받는 파일의 모든 < ProjectReference/> 노드를 찾을 수 있습니다 (이것은 < 프로젝트/> 노드 다음 표시하는 최초의 XML 노드이어야 함). 경로가 솔루션 루트에 상대적이고 새 $ (SrcRoot) MsBuild 속성이 접두사가되도록 참조를 수정합니다.
<ProjectReference Include="$(SlnRoot)\Tools\Build\Common.csproj">
<Project>{deadbeef-dead-beef-dead-beefdeadbeef}</Project>
<Name>Common</Name>
</ProjectReference>
으로
<ProjectReference Include="..\..\Tools\Build\Common.csproj">
<Project>{deadbeef-dead-beef-dead-beefdeadbeef}</Project>
<Name>Common</Name>
</ProjectReference>
에서 이제 다음, 솔루션 이름을 지정하여 건설로 이동하여 개별 프로젝트를 컴파일 할 수 있는지 확인하기 위해 테스트합니다.
문제의 프로젝트는 MVC 4 프로젝트 :이 실제로 다른 사람이 보는 것과 동일한 문제가되지 않을 수 있지만
당신이이 문제를 해결할 수 있었을 여기
는 모든 것이 제대로 작동이 라인을입니까? – Anna배치 파일을 실행 중입니다. 이 배치 파일은 빌드하려는 프로젝트를 참조하여 어디에 위치하고 있으며 배치 파일 내용을 게시 할 수 있습니까 (소유권 정보 제외)? – Nicodemeus
+1 닉. 파일 경로 문제 일 수 있습니다. 그것은 나를 위해 잘 작동합니다 (msbuild에 전달하는 경로도 상대 경로입니다) 또한 솔루션 구축에 다른 프로젝트가 있습니까? project.csproj에서 참조하고 있습니까? – arviman