2014-03-26 4 views
0

때때로 다른 플랫폼 (x86/amd64)에 최적화 된 내 프로젝트 (원시, nuget 패키지)에서 다양한 타사 어셈블리를 사용합니다. Visual Studio는 응용 프로그램 루트 (일반적으로 bin \ Debug \ PLATFORM)에 자동으로 복사하여 완전하게 비 구조화 된 엉망을 만듭니다.제 3 자 어셈블리를 하위 폴더로 복사

이제 제 3 자 dll을 사용자 지정 하위 디렉토리에 자동으로 복사하는 방법을 찾고 있습니다. 응용 프로그램 루트 (app.config 또는 코드의 privatePath)와 다른 위치에서 어셈블리를로드하는 방법은 다양하지만 자동으로 복사하는 방법은 알지 못합니다.

원하는 이미 포스트와 방법은 빌드 이벤트 발견했습니다

bin\ 
    release\ 
     x64\ 
      MyApp.exe 
      MyApp.exe.config 
      cfg\ 
       custom.config 
      lib\ 
       ninject\ 
        Ninject.dll 
        Ninject.Extensions 
        Ninject.Extensions.Logging 
       SomeNativeDll\ 
        native_x64.dll 
       OtherStuff.dll 
     x86\ 
      ... 

구조지만, 스크립트 언어와 같은 일부 배치와 모든 참조를 선언는 피타입니다!

답변

3

하나의 가능한 솔루션은 구조와 함께 하나의 추가 프로젝트를 추가하는 것입니다.

  1. 가 DLL 프로젝트를 추가 : 다음 단계는 것을 다시 placeholder.csproj
  2. 가 파일 'Ninject.dll을'추가 하위 폴더 'Ninject에'
  3. 만들기 'LIB'폴더 만들기 해당 폴더
    1. 주요 프로젝트를 yourt하는 기준으로 placholder.csproj 추가 '콘텐츠'
  4. 에 BuildAction를 설정

내용 파일 (하지만 정말 DLL의가되는) 지금 당신의 주요 프로젝트의 출력 폴더에 같은 폴더 구조에 복사를 구축 할 수 있습니다.

플랫폼을 지원하려면 specfic dll이 약간 까다로워집니다.

언로드 프로젝트는 기본 파일 찾기 :

<Content Include="test\Some_X86.dll" > 
<CopyToOutputDirectory>Always</CopyToOutputDirectory> 
</Content> 

을하고 만 출력에서 ​​86 목표에 대한 파일을 갖고 싶어 경우

<Content Include="test\Some_X86.dll" Condition="'$(Platform)' == 'x86'" > 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
</Content> 

에 조건을 추가 할 수 있습니다.

관련 문제