2010-04-05 3 views
1

"더 새로운 경우 복사"빌드 구성 작업으로 구성된 일부 콘텐츠 파일을 포함하는 클래스 라이브러리 프로젝트가 있습니다. 결과적으로 솔루션의 모든 프로젝트에 대해 ...\bin\ 아래의 폴더에 파일이 복사됩니다. 이 같은 솔루션에서 ASP.NET 웹 프로젝트 (MVC 임)가 있습니다. 라이브러리에서 정적 생성자를 사용하여 파일을 웹 프로젝트에서 액세스 할 수있는 데이터 구조로로드합니다. 이전에는 콘텐츠를 포함 된 리소스로 포함 시켰습니다. 이제 다시 컴파일하지 않고도이를 대체 할 수 있어야합니다. 나는 세 가지 다른 상황에서 데이터에 액세스하려면 :복사 된 내용에 액세스

  1. 단위는 단위 테스트에 대한

IIS에서 사이트를 호스팅하는 웹 응용 프로그램

  • 디버깅, Environment.CurrentDirectory 점에 라이브러리 어셈블리
  • 테스트 카피 된 컨텐츠를 포함한 패스 그러나 디버깅 할 때 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE을 가리 킵니다. 나는 Assembly.GetExecutingAssembly().LocationC:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\c44f9da4\9238ccc\assembly\dl3\eb4c23b4\9bd39460_f7d4ca01\을 가리키는 것을 보았습니다. 내가 필요한 것은 webroot \bin 폴더의 실제 위치이지만 라이브러리 프로젝트의 정적 생성자이므로 Request.PhysicalApplicationPath에 액세스 할 수 없습니다.

    "Copy if newer"파일을 항상 찾을 수있는 다른 환경 변수 또는 구조가 있습니까?

  • 답변

    1

    Assembly.Location 실제로 섀도 복사본을 만든 후에 어셈블리 위치를 가리 킵니다.

    그러나

    , 그 MSDN 페이지 상태 :

    파일이 그림자 복사되기 전에, 위치를 얻을 CodeBase property을 사용합니다.

    +0

    굉장한, 그 트릭을하는 것으로 보입니다. –

    관련 문제