2012-09-10 2 views
7

한 번의 클릭으로 빌드 할 수 있도록 웹 사이트 용 빌드 시스템을 작성하려고합니다. 소스 코드 저장소에서 코드를 깨끗하게 복사 한 다음 msbuild를 사용하여 AspNetCompiler 작업을 실행하여 웹 사이트의 모든 사전 컴파일 작업을 수행합니다.AspNetCompiler 작업에 대해 VirtualPath 속성이 필요한 이유는 무엇입니까?

나 혼란스러운 점은 VirtualPath 또는 MetabasePath를 지정해야한다는 것입니다. 나는 메타베이스 경로가 없다 - 나는 단지 서버를 선택 (즉, dev 서버를 먼저 실행 한 다음 나중에 서버를 실행) 한 서버에 배치 할 수있는 로컬 디렉토리에 컴파일하려고한다.

동일한 코드를 여러 위치에 배포 할 수 있기 때문에 VirtualPath가 까다 롭습니다. 코드는 일부 정보를 표시하기 위해 SiteID를 산출하기 위해 일부 컨텍스트와 구성 세부 정보를 사용하므로 하나의 가상 경로를 지정하는 것이 현명하지는 않습니다.

유사한 라인 (예 : VirtualPath in AspNetCompiler MSBuild Task - does it have to be equal to the final deployed Virtual Path?)을 따라 여러 가지 다른 질문이 있지만 내가 찾은 유일한 답변은 더 일화적인 것 같습니다. 즉, 경험에 차이가 없다고 말하는 것입니다.

그러나 실제로는 아무런 차이가 없다고 생각합니다. 이것이 사용되는 상황이 있거나 그렇지 않으면 필요하지 않을 것입니다.

그렇다면이 작업을 수행하는 사람은 누구입니까? 구성된 가상 경로를 태스크로 전달하면 어떤 문제점이 발생할 수 있습니까?

답변

2

Visual Studio에서 사이트를 게시 할 때이 데이터를 입력 할 필요가 없습니다. 실제로 어떤 옵션도 본 적이 없습니다. MS-Build 구성에서 필수적입니다.

Visual Studio에서 사용하는 모든 항목을 "리버스 엔지니어링"할 수는 있지만 내 생각에 단일 슬래시 "/"또는 이와 비슷한 내용이됩니다.

사실, 요구 사항은 가상 경로 공급자 또는 리소스 공급자를 사용하여 미리 컴파일 된 웹 사이트 주변의 issues과 관련이있을 수 있습니다.

+0

그래, 나도 꽤 놀랐다. 그리고 비주얼 스튜디오가하는 일을 리버스 엔지니어링하는 방법을 모르겠습니다. Visual Studio가 사용하고있는 것을 검색하기 위해 그 속성이 사용되지 않음을 알지 못합니다. 내가 어떻게 그렇게 할 수 있을지에 대한 제안은 인정 될 것이다. – Chris

+0

Visual Studio에서 도구 -> 옵션 -> 프로젝트 및 솔루션 (찾을 수없는 경우 "모든 설정 표시"선택) -> "빌드 및 실행"으로 이동하십시오. 그런 다음 출력 상세 정보를 진단으로 설정하십시오. 출력 창 (Ctrl-Alt-O)을 열고 빌드를 수행하십시오. 이 컴퓨터에 웹 사이트가 없거나 빠른 정보를 얻었습니다. –

+0

그것은 훌륭한 옵션이며 다른 문제를 디버깅하는 데 도움이 될 수 있습니다. 슬프게도 프리 컴파일 단계에서 완전한 진단 결과를 얻지 못하는 것 같고 여분의 디버그 출력 (매개 변수 사용과 같은)없이 일반적인'Building directory '/ MSReporting/App_Code /'. :( – Chris

0

Visual Studio는 VirtualPath 속성에 단일 백 슬래시를 사용합니다. 생성 된 전체 명령 행 문자열은 다음과 유사합니다.

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v \ -p C:\src\Web\WebApplication1\obj\Release\AspnetCompileMerge\Source C:\src\Web\WebApplication1\obj\Release\AspnetCompileMerge\TempBuildDir 
관련 문제