2017-01-19 5 views
0

내 솔루션에는 두 개의 실행 파일 중 하나가 ClickOnce를 통해 배포되어서는 안되며 생성 된 파일이 없습니다. 특정 목적에 배포되는 내부 콘솔 응용 프로그램입니다. 세 번째는 최종 사용자에게 배포되는 일반 ClickOnce 응용 프로그램입니다.게시하는 동안 MSBuild 명령 줄이 비 ClickOnce 응용 프로그램을 무시하도록 만드는 방법?

블로그에서 this questionthis tip을 따라하면 해당 응용 프로그램에서 ClickOnce를 제거하고 Visual Studio에서 올바르게 빌드 할 수있었습니다.

그러나 MSBuild 명령 줄을 사용하여 지속적으로 통합 할 때 문제가 발생합니다. 게시의 마지막 단계에서 다른 두 실행 파일의 매니페스트를 찾지 못했기 때문에 MSBuild에서 오류가 발생하므로 빌드가 실패합니다. 또한 게시 출력을 검사 할 때 ".exe"및 ".config"파일이 포함 된 두 응용 프로그램에 대해 "응용 프로그램 파일"에 폴더가 생성됩니다 (자동으로 업로드되기 때문에 바람직하지 않습니다. 있다).

MSBuild가 Clickonce가없는 프로젝트의 게시 단계 만 무시하도록하는 매개 변수 나 다른 방법이 있습니까?

감사합니다.

+0

문제가 계속되는 경우 문제가 해결되면 알려 주시기 바랍니다. –

답변

0

사용자 지정 대상을 사용하여이를 달성 할 수 있습니다. 프로젝트 (csproj) 파일을 편집 (프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 언로드 -> xxx.csproj 편집) 다음 코드를 추가하십시오.

<PropertyGroup> 
    <!-- the folder of the project to build --> 
    <ProjLocation>D:\Project\Msbuild\ConsoleApplication3\ConsoleApplication1</ProjLocation> 
    <ProjLocationDebugDir>$(ProjLocation)\bin\Debug</ProjLocationDebugDir> 
    <ProjPublishLocation>$(ProjLocationDebugDir)\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="Test" DependsOnTargets="Clean"> 
    <Message Text="Publish-Build started for build no $(ApplicationRevision)" /> 
    <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj" 
     Properties="$(DefaultBuildProperties)" 
     Targets="Publish"/> 
    <ItemGroup> 
     <SetupFiles Include="$(ProjPublishLocation)\*.*"/> 
     <UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*"/> 
    </ItemGroup> 
    <Copy SourceFiles="@(SetupFiles)" DestinationFolder="$(DeploymentFolder)\" /> 
    <Copy SourceFiles="@(UpdateFiles)" DestinationFolder="$(DeploymentFolder)\Application Files\%(RecursiveDir)"/> 
    </Target> 

    <Target Name="Clean"> 
    <Message Text="Clean project" /> 
    <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj" 
    Properties="$(DefaultBuildProperties)" 
    Targets="Clean"/> 
    </Target> 

그런 다음 다음 msbuild 명령 줄을 사용할 수 있습니다. > "구성 관리자를"실제 구성에서 다른 실행 파일을 제거 - 여기

msbuild /t:test 

는 프로젝트라는 이름의 ConsoleApplication1 https://1drv.ms/u/s!AlvaNEnglADDgQRMB1LK4mo9KVXO

+0

저는 Configuration Manager에서 새로운 Active Solution 구성을 시도해 왔으며 제대로 작동하는 것 같습니다. 이것은 구성 관리자와 동일한 경로입니까? –

+0

당신이 문제를 해결했음을 알고 기쁘게 생각합니다. 해결책을 게시하고 답을 표시하십시오. 같은 문제가있는 다른 커뮤니티에 도움이 될 것입니다. 내가 제공하는 솔루션은 csproj 파일을 편집해야하는 사용자 정의 작업입니다. –

0

나는 "BUILD"으로 이동하여 내 문제 해결을 확인하세요 참조 용 데모입니다 . 그런 다음 내 솔루션에 필요할 때 다른 실행 파일을 빌드하기 위해 새로운 구성을 작성했습니다. 이 같은 각 프로젝트의 구성 속성을 설정하도록 변경

내 CI 작업 :

프로젝트 A -> "C : \ WINDOWS \ Microsoft.NET 프레임 워크 \ v4.0.30319 \ MSBuild.exe를/대상 \ : 정리, 빌드, 게시/속성 : 구성 = ProjectA_Release; "

프로젝트 B - "C : \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe/target : clean; 빌드; 게시/속성 : 구성 = ProjectB_Release;"

등등 ...

내가 파일을 게시 분리하고 하나의 빌드에서 혼합 잘못된 물건을 얻을 수있는 방법입니다.