2017-11-08 14 views
0

많은 프로젝트가있는 솔루션이 있는데 그 중 일부는 Outputtype이 exe입니다.솔루션을 구축 할 때 WPF clickonce 앱을 게시하는 방법은 무엇입니까?

나는

/target:publish /p:PublishDir="$(build.artifactstagingdirectory)\ 

를 호출 내 MSBUILD의 일환으로 다음 인수를 사용하고 있습니다 그러나,이 EXE의 Outputtype 모든 프로젝트를 게시합니다. 그러나 특정 프로젝트를 하나만 게시하려고합니다.

대부분의 내용은 PublishProfile이라는 참조를 읽었습니다. 그러나이 프로젝트 유형에 대해 PublishProfile을 만드는 방법은 없습니다. 게시를 클릭하면 기본 게시 마법사가 나타나고 게시 설정은 .csproj 파일에 저장되고 .pubxml 파일이 아닙니다. 그렇다면 어떻게 특정 프로젝트를 게시하도록 요청할 수 있습니까?

+0

솔루션을 빌드하고 하나의 MSBuild 명령 줄로만 특정 프로젝트를 게시 하시겠습니까? 'msbuild "xx.csproj"/ target : publish/p : PublishDir = "$ (build.artifactstagingdirectory) \"'명령 줄을 사용하여 특정 프로젝트를 게시하는 방법은? –

답변

0

그러나이 프로젝트 유형에 대한 PublishProfile을 만드는 방법은 없습니다. 게시를 클릭하면 기본 게시 마법사가 나타나고 게시 설정은 .csproj 파일이 아닌 .pubxml 파일에 저장됩니다. 그렇다면 어떻게 특정 프로젝트를 게시하도록 요청할 수 있습니까?

PublishProfile은 웹 프로젝트에 한 번 클릭하지 않고 사용됩니다. "기본 게시 마법사 및 게시 설정은 .pspxml 파일이 아닌 .csproj 파일에 저장됩니다."이므로 PublishProfile은 올바른 옵션이 아니어야합니다.

당신은 MSBuild와 솔루션에서 특정 프로젝트를 게시 할 경우

는 간단한 방법처럼, 전체 솔루션을 구축 할 수 있지만, 하나 개의 프로젝트 파일을 게시 할 수 있습니다 :

msbuild.exe "ProjectName.csproj" /target:publish /p:PublishDir="$(build.artifactstagingdirectory)\ 

구축하고 하나의 명령 줄을 사용하는 경우 게시는 지속성입니다. 게시하려는 프로젝트 파일에 프로젝트를 게시하는 대상을 사용자 정의 할 수 있습니다. For example :이 사용자 정의 목표와

<PropertyGroup> 
    <!-- the folder of the project to build --> 
    <ProjLocation>..\YourProjectFolder</ProjLocation> 
    <ProjLocationReleaseDir>$(ProjLocation)\bin\Release</ProjLocationReleaseDir> 
    <ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation> 
    <!-- This is the web-folder, which provides the artefacts for click-once. After this 
    build the project is actually deployed on the server --> 
    <DeploymentFolder>D:\server\releases\</DeploymentFolder> 
</PropertyGroup> 


<Target Name="Publish" DependsOnTargets="Clean"> 
    <Message Text="Publish-Build started for build no $(ApplicationRevision)" /> 
    <MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Publish"/> 


    <ItemGroup> 
     <SchoolPlannerSetupFiles Include="$(ProjPublishLocation)\*.*"/> 
     <SchoolPlannerUpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/> 
    </ItemGroup> 
    <Copy 
     SourceFiles="@(SchoolPlannerSetupFiles)" 
     DestinationFolder="$(DeploymentFolder)\" 
    /> 
    <Copy 
     SourceFiles="@(SchoolPlannerUpdateFiles)" 
     DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)" 
    />  
    <CallTarget Targets="RestoreLog"/> 
</Target> 
<Target Name="Clean"> 
    <Message Text="Clean project:" /> 
    <MSBuild Projects="$(ProjLocation)/YourProject.csproj" Properties="Configuration=Release" Targets="Clean"/> 
</Target>  

, 당신은 단지 솔루션을 구축해야 할 프로젝트를 게시 할 필요가 없습니다.

희망이 도움이됩니다.