2010-01-25 31 views
12

Tôi có ứng dụng Windows trong csproj trong giải pháp của mình và tôi muốn tạo Xuất bản bằng dòng lệnh (bat, cmd).Các vấn đề khi sử dụng MsBuild bằng cách sử dụng dòng lệnh để xuất bản Bấm một lần

kịch bản của tôi là (tôi đặt \r\n để đọc tốt hơn):

SET MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
    SET CARWIN="..\..\Security.CarWin.csproj" 

    rem msbuild para publish 

    %MSBUILD% /target:rebuild;publish %CARWIN% 
/p:ApplicationVersion="1.0.0.0" 
/p:Configuration=release 
/p:PublishUrl="C:\ClickOnce\CarWin.WebInstall\Publicacion\" 
/p:InstallUrl="http://desserver/carwinclickonce/Publicacion/" 
/p:PublishDir="C:\ClickOnce\CarWin.WebInstall\Publicacion\" 

lưu ý: Tôi sẽ cố gắng quá sử dụng /target:publish

Nhưng trên đường đi PublishDir hoặc PublishUrl (C: \ ClickOnce \ CarWin. WebCài đặt \ Publicacion) không tạo bất kỳ tệp nào.

Tôi đã xem nhiều bài đăng trên trang web này và google nhưng tôi không tìm thấy bất kỳ giải pháp nào.

Trả lời

11

Đưa xem this Stack Overflow question. Về cơ bản, thuộc tính PublishUrl bị bỏ qua khi chạy ClickOnce từ dòng lệnh. Nhưng bạn có thể dễ dàng thêm hành vi với một nhiệm vụ MSBuild bổ sung.

Tôi đã tạo thêm MSBuild-File, ví dụ: build.csproj. Điều này chứa một số publish-task. Nhiệm vụ này trước tiên gọi MS-Build thông thường của dự án đích. Sau đó nó sao chép kết quả vào thư mục xuất bản. Bây giờ tôi gọi 'build.csproj' thay vì tệp dự án reguar từ dòng lệnh:

<?xml version="1.0" encoding="utf-8"?> 
    <Project ToolsVersion="3.5" DefaultTargets="Publish" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
     <PropertyGroup> 
     <!-- project name--> 
     <ProjectName>MyExampleProject</ProjectName> 
     <!--properties for the project-build--> 
     <DefaultBuildProperties>Configuration=Release</DefaultBuildProperties> 
     <!-- location of the click-once stuff, relative to the project --> 
     <ProjectPublishLocation>.\bin\Release\app.publish</ProjectPublishLocation> 
     <!-- Location you want to copy the click-once-deployment. Here an windows-share--> 
     <ProjectClickOnceFolder>\\TargetServer\deployments</ProjectClickOnceFolder> 
     </PropertyGroup> 
     <Target Name="Publish" DependsOnTargets="Clean"> 
     <Message Text="Publish-Build started for build no $(ApplicationRevision)" /> 
     <!-- run the original build of the project --> 
     <MSBuild Projects="./$(ProjectName).csproj" 
     Properties="$(DefaultBuildProperties)" 
     Targets="Publish"/> 
     <!-- define the files required for click-once--> 
     <ItemGroup> 
      <SetupFiles Include="$(ProjectPublishLocation)\*.*"/> 
      <UpdateFiles Include="$(ProjectPublishLocation)\Application Files\**\*.*"/> 
     </ItemGroup> 
     <!-- and copy them --> 
     <Copy 
     SourceFiles="@(SetupFiles)" 
     DestinationFolder="$(ProjectClickOnceFolder)\"/> 
     <Copy 
     SourceFiles="@(UpdateFiles)" 
     DestinationFolder="$(ProjectClickOnceFolder)\Application Files\%(RecursiveDir)"/> 
     </Target> 
     <Target Name="Clean"> 
     <Message Text="Clean project" /> 
     <MSBuild Projects="./$(ProjectName).csproj" 
     Properties="$(DefaultBuildProperties)" 
     Targets="Clean"/> 
     </Target> 
    </Project> 
+0

Cảm ơn bạn! y ou're mẫu mã tuyệt vời, tuyệt vời –

2

Tôi không biết đây có phải là vấn đề không, nhưng tôi nhận thấy rằng bạn vượt qua tham số/target hai lần?

bạn bạn có thể sử dụng một dấu chấm phẩy phân dụ:

/target:rebuild;publish 

MSDN Documentation on command line parameters and MSBuild

Nếu điều đó cũng không làm việc bạn có lẽ có thể thử để gỡ lỗi nó bằng cách thông qua

/verbosity:diag 
+0

tôi cố gắng/mục tiêu: xây dựng lại; xuất bản và chỉ/target: xuất bản nhưng không tạo ra file xuất bản. Bất kỳ ý tưởng nào, xin vui lòng ?? Cảm ơn !!! –

+0

Chạy với/verbosity: diag và đăng đầu ra đó –

+0

logfile của đầu ra có kích thước hơn 1 MB !!! không thể đăng bài ở đây ... vấn đề .. Tôi không nhận được xuất bản nó trong thư mục mà tôi đặt trong tập tin cmd ... cảm ơn. –

16

Sử dụng PublishDir thay vì PublishUrl khi chạy từ dòng lệnh.

msbuild /target:publish /p:Configuration=Release;PublishDir=c:\playground\ 

Bạn cũng có thể thay đổi phiên bản, như ApplicationRevision = 666; MinimumRequiredVersion = 1,1

+0

cho PublishDir, điều quan trọng là phải có kết thúc "\" – liang

+0

Điều này phải được đánh dấu là câu trả lời chính xác –

Các vấn đề liên quan