programing

웹 응용 프로그램을 상대 파일 시스템 경로에 게시

mailnote 2023. 10. 8. 10:18
반응형

웹 응용 프로그램을 상대 파일 시스템 경로에 게시

로컬 테스트(특히 xml 구성 변환)를 위해 상대 경로에 게시를 설정하고 있습니다.각 개발자는 체크아웃된 프로젝트에 대한 각자의 경로를 가지고 있으며 저는 기계/환경에 구애받지 않는 게시물을 설정하고 싶습니다.

게시 대화 상자에 허용된 변수나 와일드카드가 표시되지 않으며 허용되지 않습니다.obj\publish아니면file://./obj/publish

상대적인 파일 시스템 경로에 게시하는 방법이 있습니까?

Visual Studio 2012 및 새로운 게시 구성 파일을 사용하는 경우 (Properties/PublishProfiles/Local.pubxml) 파일 자체에서 다음 구문을 사용할 수 있습니다.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <publishUrl>$(MSBuildThisFileDirectory)..\..\obj\publish</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

$(MSBuild)에 유의하십시오.이 FileDirectory) 속성은 Local.pubxml 디렉토리로 확인됩니다.거기서부터 당신은 당신이 필요한 곳에 도착하기 위해 위로 횡단해야 합니다.

편집

Visual Studio 2012의 경우 이 솔루션은 작동하지 않습니다.이거 끝나고 바로 michielvoo의 답을 봐야 합니다.

원답

시도하고 또 시도한 끝에 해결책을 찾았습니다. 설정을 통해 상대 경로를 사용할 수 있습니다.

file:///./obj/publish

에서Publish WebApp대화상자를 사용하지만 사용 중인 사용자가 이미 존재하고 쓰기 가능한 경로를 사용해야 합니다.이렇게 하면 웹 앱을 로컬 폴더 또는 경로 관련 폴더에 게시할 수 있습니다.

이게 도움이 된다면 저에게 알려주세요.저는 그랬어요.

Visual Studio 2012에서는 순방향 슬래시를 사용하는 일반적인 경로로 작동합니다.

../../../../../app

게시된 프로젝트의 루트 디렉터리에서 시작합니다.

Visual Studio 2013에서는 다음과 같은 효과를 얻었습니다.

file:\\..\..\..\Publish

원래 포스터가 원하는 대로 obj\publish에 게시되는 것이 아니라 내가 원하는 대로 내 시스템의 다른 디렉토리(몇 개의 폴더)에 게시됩니다.원하시면 obj\publish용으로 수정해주세요.

VS 2015는 다음과 같은 것을 받아들입니다.

..\..\..\DeployFiles

또한 폴더가 없는 경우에는 폴더를 생성하여 게시 설정을 소스 제어로 전환할 수 있지만 DeployFiles 폴더와 해당 내용을 쉽게 무시할 수 있습니다.

추가 게시 단계에서 상대 경로를 사용하여 msdeploy(MSVS 2015, dnx)를 호출해야 하는 경우 프로젝트 파일(pubxml은 아니지만)을 편집하고 상대 경로를 절대 경로로 변환하는 변수를 만드는 것도 대안입니다.

<Target Name="AfterWebPublish" AfterTargets="WebPublish">
     <!-- 
          msdeploy cannot currently handle relative paths for contentPath so first convert it to an absolute path 
     -->    
    <PropertyGroup>
        <AbsOutDir>$([System.IO.Path]::GetFullPath("$(ProjectDir)$(OutDir)"))</AbsOutDir>
    </PropertyGroup>

    <Exec WorkingDirectory="$(ProjectDir)" Command='call "$(DevEnvDir)..\Tools\vsvars32.bat"' />    
    <Exec WorkingDirectory="$(ProjectDir)" Command='"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy" -verb:sync -source:contentPath="$(AbsOutDir)PublishOutput" -dest:package="$(AbsOutDir)$(MSBuildProjectName).zip"' />
  </Target>

그리고나서$(AbsOutDir)필요에 따라 다른 곳에서 사용할 수 있습니다(예: formsdeploy contentPath).대화 상자에 입력할 수 없을 것 같습니다.

"어떻게-어떻게-아이-겟-ms 빌드-평가-인쇄-모든 경로-주어진 경우-상대적으로-평가-인쇄"에서.

언급URL : https://stackoverflow.com/questions/6587254/webapplication-publish-to-relative-filesystem-path

반응형