2013-09-05 6 views
5

다소 긴 질문이긴하지만 설명이 잘되어 있습니다.가상 응용 프로그램을 사용하여 하늘색 웹 역할을 호스팅하면 전체 프로젝트가 전송되고 구성 변환은 처리되지 않습니다.

나는 그 사이트 아래의 가상 응용 프로그램으로 전달하는 루트 사이트가있는 웹 역할이 있습니다. 내 프로젝트가 로컬에서 잘 작동하며 거의이 클라우드에서 완벽하게 작동합니다. 새 빌드 구성을 사용하여 Azure에서 작동하도록 내 사이트의 web.config를 얻습니다 (SQL 세션 상태를 사용해야 함).

어쨌든 내 호스팅 된 사이트를 검사 할 때마다 폴더 0, 1, 2에 3 개의 사이트가 표시됩니다. 0은 내 루트를 나타내며 해당 폴더의 내용은 호스팅 된 응용 프로그램의 경우 최소 bin, default.aspx, packages 및 web.config에 대한 최소값입니다. 이것은 훌륭하게 작동하며 내 데이터베이스의 세션을 주시하여 작동하는 것을 볼 수 있습니다.

그러나 가상 응용 프로그램을 나타내는 다른 (동일한) 폴더 중 하나를 선택하면 전체 Visual Studio 프로젝트를 볼 수 있습니다. 코드 파일, web.config 변환 등. 실제로 변환은 실제로 처리되지 않습니다. 전체 프로젝트가 그곳에 버려졌습니다.

Visual Studio 2010을 사용하여 응용 프로그램을 내 웹 역할에 게시했습니다. 이 동작을 제어하기 위해 설정에서 명백한 것을 볼 수 없습니다. 도움이된다면 내 서비스 정의 파일의 일부입니다.

<WebRole name="root" vmsize="Small"> 
    <Sites> 
     <Site name="Web"> 
     <VirtualApplication name="en" physicalDirectory="../../../sitefolder" /> 
     <VirtualApplication name="en-gb" physicalDirectory="../../../sitefolder" /> 
     <Bindings> 
      <Binding name="Endpoint1" endpointName="Endpoint1" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <Endpoints> 
     <InputEndpoint name="Endpoint1" protocol="http" port="80" /> 
    </Endpoints> 
    <Imports> 
     <Import moduleName="Diagnostics" /> 
     <Import moduleName="RemoteAccess" /> 
    </Imports> 
    </WebRole> 
<WorkerRole name="emailer" vmsize="ExtraSmall"> 
    <Imports> 
     <Import moduleName="Diagnostics" /> 
     <Import moduleName="RemoteAccess" /> 
     <Import moduleName="RemoteForwarder" /> 
    </Imports> 
</WorkerRole> 

거기에는 구성 설정이 있지만 생략했습니다. 모든 도움을 주셔서 대단히 감사합니다. 여기에 편집 한

여기에 설명 된 변경이 구현 된 후에 내 솔루션에 윈도우 푸른 프로젝트 내 프로젝트 파일입니다 : 내가 수동으로 폴더를 생성했다이 컴파일을하기 위해 http://michaelcollier.wordpress.com/2013/01/14/multiple-sites-in-a-web-role/

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
*** entire content as normal and untouched manually *** 
<!-- Import the target files for this project template --> 
    <PropertyGroup> 
    <VisualStudioVersion Condition=" '$(VisualStudioVersion)' == '' ">10.0</VisualStudioVersion> 
    <CloudExtensionsDir Condition=" '$(CloudExtensionsDir)' == '' ">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Windows Azure Tools\2.0\</CloudExtensionsDir> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)' == 'Staging01' "> 
    <OutputPath>bin\Staging01\</OutputPath> 
    </PropertyGroup> 
    <PropertyGroup> 
    <!-- Inject the publication of "secondary" sites into the Windows Azure build/project packaging process. --> 
    <CoreBuildDependsOn> 
     CleanSecondarySites; 
     PublishSecondarySites; 
     $(CoreBuildDependsOn) 
    </CoreBuildDependsOn> 
    <!-- This is the directory within the web application project directory to which the project will be "published" for later packaging by the Azure project. --> 
    <SecondarySitePublishDir>azure.publish\</SecondarySitePublishDir> 
    </PropertyGroup> 
    <!-- These SecondarySite items represent the collection of sites (other than the web application associated with the role) that need special packaging. --> 
    <ItemGroup> 
    <SecondarySite Include="..\bobblejob.com\bobblejob.com.csproj" /> 
    </ItemGroup> 
    <Target Name="CleanSecondarySites"> 
    <RemoveDir Directories="%(SecondarySite.RootDir)%(Directory)$(SecondarySitePublishDir)" /> 
    </Target> 
    <Target Name="PublishSecondarySites" Condition="'$(PackageForComputeEmulator)' == 'true' Or '$(IsExecutingPublishTarget)' == 'true' "> 
    <MSBuild Projects="%(SecondarySite.Identity)" Targets="Build;_WPPCopyWebApplication" Properties="Configuration=$(Configuration);Platform=$(Platform);WebProjectOutputDir=$(SecondarySitePublishDir)" /> 
    </Target> 
    <Import Project="$(CloudExtensionsDir)Microsoft.WindowsAzure.targets" /> 
</Project> 

내 bobblejob.com 폴더의 "azure.publish". IsExecutingPublishTarget이 true 일 때만 빌드를 실행해야한다고 오류가 표시 될 수 있습니까? 이걸 내 devbox와 내가 설정 한 모든 배포판에서 실행하고 싶습니다 ...

- 11/09/13 - 이것은 여전히 ​​문제입니다. 누구에게 해결책이 있습니까?

답변

5

나는 올해 초 블로깅 한 상황과 비슷한 문제에 직면 해 있다고 생각합니다. 참조 http://michaelcollier.wordpress.com/2013/01/14/multiple-sites-in-a-web-role/

기본적 때 비주얼 스튜디오 패키지가 physicalDirectory 속성에 의해 지정된 파일이 웹 프로젝트는, 따라서 정상적인 빌드 작업 중 하나가 (컴파일 수행하지 않는 것을 "알고"하지 않는 웹의 역할을, 구성 변환 등)

내 블로그 게시물은 빌드 프로세스에 일부 사용자 지정 작업을 삽입하여이 문제를 해결할 수있는 방법을 설명합니다. 희망이 도움이됩니다!

+0

답장을 보내 주셔서 감사합니다. 예, 제가 묻는 질문에 대한 답변을 제공합니다. 그러나 나는 그것이 작동하도록하는 데 어려움을 겪고있다. 첫 번째 시도는 Alternate Method (수동으로 프로젝트 파일을 완전히 편집하는 편이 낫지 않았으므로) 였지만 프로젝트를 컴퓨터에서 실행하여 전체 시스템을 완전히 정지 시켰습니다. 통제권을 얻으려고 20 분이 지난 후에 나는 그 일을 하드 리셋했다! 나는 계속 노력할 것이고 그것이 어떻게 진행되는지 알려줄 것입니다. –

+0

맞아요, 저는이 방법을 당신의 블로그 포스트에서 두 가지 방법으로 사용하지 못했습니다. 그러나 나는 MSBuild를 사용하지 않았거나 어떤 구성 옵션을 사용하지 않았다는 것을 인정합니다. 따라서 실수를했을 수도 있습니다. 먼저 다른 방법을 시도해 보았습니다. Post-Build 섹션의 명령 중 하나가 MSBuild를 다시 실행하는 것처럼 보입니다. 따라서 컴퓨터를 실행할 때마다 다른 컴퓨터를 실행할 때마다 컴퓨터가 작동하지 않습니다. 나는 이것이 당신의 게시물에서 어떻게 올바른지 볼 수 없다. 다음 첫 번째 방법을 시도하고 각 단계를 신중하게 완료했습니다. 나는 위의 질문에서 더 설명해야한다. –

+0

$ (ProjectDir) .. \ bobblejob-azure \ Sites \ $ (ProjectName) 은 C : \ Chaotic \ Projects \ bobblejob.com \ bobblejob.com \으로 바뀝니다. \ bobblejob-azure \ Sites \ bobblejob.com - 즉, ".."는 디렉토리를 거꾸로 가지 않습니다. –

0

마침내이 작업이 있으며 위의 링크 덕분입니다.

처음으로이 방법을 사용해 본 결과 제대로 작동하지 않았습니다. 나는 그때부터 재 시도했고 그 방법이 효과적이었습니다 - 위의 링크를 따르십시오. 나는 MSBuild에서 읽은 두 가지 방법을 시도하는 사이에 무슨 일이 있었는지 읽고 이해할 수 있다고 생각합니다.

다른 점은 내가 임시 게시 폴더를 "azure_publish"가 아닌 "azure.publish"로 지정했다는 것입니다.나는 기간이 예약 된 문자인지 아닌지 알기에는 충분하지 않습니다.

감사합니다. mcollier. 이것에 대한 Microsoft의 위임을 받아야합니다. ;-)