2011-01-15 7 views
2

engine.dll에 의존하는 game.exe이 있다고 해봅시다. game.csproj을 빌드 할 때 engine.csproj을 참조하는 프로젝트의 OutputPath에 일부 내용을 복사하려고합니다. 그래서이 예제의 경우, 필자는Msbuild가 주 프로젝트에서 OutputPath를 가져옵니다.

game.csproj가 어떻게 engine.csproj에서 game.csproj의 $ (OutputPath)를 얻을 않는 OutputPath의 뭔가를 복사 engine.csproj 줄까? 나는이 같은 게임 엔진에 콘텐츠 프로젝트를 짓고 있어요 때문에

나는이 작업을 수행 할 수있는 이유는 다음과 같습니다

<Target Name="BuildContent"> 
    <MSBuild Projects="Content\Content.contentproj" 
      Properties="OutputPath=MAINPROJECTPATH" /> 
</Target> 

그래서 나는 '주 프로젝트'에 OutputPath를 지정해야하는 게임이다.

답변

4

의 일부 사전 - 빌드 이벤트 코드를 복사하여 일부는 솔루션을 발견 msbuild 대상에서 주위 nosing. <Target Name="BuildContent"> <MSBuild Projects="Content\Content.contentproj" Properties="ParentOutputDir=$(ParentOutputDir); ParentIntermediateDir=$(ParentIntermediateDir); ParentProjectDir=$(ProjectDir);" /> </Target>

1

먼저 프로젝트 간 참조를 사용하여 자동으로 발생하지 않는 추가 파일을 복사해야하는지 분명하지 않습니다.

프로젝트 프로젝트에 프로젝트 참조 (DLL 파일 참조가 아닌) 참조가 포함 된 경우 msbuild는 Engine의 모든 출력을 게임 출력 디렉토리로 복사해야합니까?

프로젝트간에 수동으로 파일을 복사해야하는 경우 현재 프로젝트를 참조하는 프로젝트를 쉽게 찾을 수있는 방법이 없다고 생각합니다. 따라서 엔진과의 간접적 인 수준을 만드는 것이 더 간단 할 것입니다 파일의 나머지 당겨 파일 (해당 파일을 포함 할 필요가 또는 다른 프로젝트) 절반 방법 및 게임 밀고 :

  1. 일부 게시물을 Engine.csproj에 - 빌드 이벤트 코드는 "참조를 생성 "디렉토리를 SolutionDir에 저장하고 공유 할 파일을 복사합니다.
  2. 다음 Game.csproj 디렉토리 "참조"로부터의 파일을 포함 할 수 있습니다 - 중 직접 파일 참조로, 또는으로 Game.csproj
+0

같은 부모의 속성을 통해 내가합니다 (csproj 파일)이 같은 다른 프로젝트 내 프로젝트를 짓고 있어요 때문에이 필요한 이유를 통과해야 Content \ Content.contentproj "속성 ="OutputPath = MAINPROJECTPATH ​​"> –

관련 문제