2011-10-10 9 views
1

同じVSソリューション内に9つのアプリケーションがあります。すべてがClickonce(同じホスト内の別の場所)に配置されていますが、現在は右クリックしてすべての公開ウィザードを実行する必要があります。しかし、スクリプトを使ってこれを行う自動化された方法があると思っています(理想的には、私はホストのパスワード(FTP用)を書くことができます)。Visual Studio内のスクリプトからGenerate&Publish(ClickOnce)

これは可能ですか?

ありがとうございました。

答えて

2

はい、可能ですが、私たちはMS Buildを使用して一回クリックして公開し、ftp経由でアップロードします。

GoogleのMSのタスクを作成し、MSコミュニティは、これが私たちのビルドスクリプトのテストされていない抽出物であるタスク

を構築し、作業を開始する必要があります

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <!-- Documentation: 

    http://msbuildhg.codeplex.com/documentation 
    http://msbuildtasks.tigris.org/ 

    --> 
    <PropertyGroup> 


     <MSBuildMercurialPath>.</MSBuildMercurialPath> 
     <MSBuildCommunityTasksPath>.</MSBuildCommunityTasksPath> 

     <BuildInputDir>src</BuildInputDir> 
     <BuildOutputDir>build</BuildOutputDir> 
     <TestOutputDir>test</TestOutputDir> 
     <PublishOutputDir>publish</PublishOutputDir> 
     <PublishDir>..\..\$(PublishOutputDir)</PublishDir> 
     <SolutionToCompile>$(BuildInputDir)\EventLogger.sln</SolutionToCompile> 

     <!-- Settings --> 
     <Company>Veodin</Company> 
     <Product>KeyRocket</Product> 

     <!-- Click once deployment --> 
     <InstallUrl>http://download.veodin.com/keyrocket/</InstallUrl>   
     <UpdateUrl>http://download.veodin.com/update/keyrocket/</UpdateUrl> 

     <!-- Upload_FTP --> 
     <UploadMethod>FTP</UploadMethod> 
     <ftpHost>ftp.com</ftpHost>              <!-- e.g. 'mroc.de' !!! --> 
     <ftpUser>user</ftpUser> 
     <ftpPass>password</ftpPass> 
     <ServerDir>/download/</ServerDir>         <!-- e.g. 'downloads/test/' !!! --> 
    </PropertyGroup> 

    <Import Project="Tools\MSBuild.Mercurial.Tasks" /> 
    <Import Project="Tools\MSBuild.Community.Tasks.Targets" /> 

    <Target Name="Clean"> 
     <Message Text="-------------------------------------------------------------------------------------------------------------------"/> 
     <RemoveDir Directories="$(BuildOutputDir)" /> 
     <RemoveDir Directories="$(TestOutputDir)" /> 
     <RemoveDir Directories="$(PublishOutputDir)" /> 
    </Target> 


    <Target Name="Publish"> 
     <Message Text="-------------------------------------------------------------------------------------------------------------------"/> 
     <Message Text="Publishing version $(Major).$(Minor).$(Build).$(Revision), Company=$(Company), Product=$(Product)"/> 
     <PropertyGroup> 
      <PublishArgs>Configuration=Automated_Build;PublishDir=$(PublishDir)\;InstallUrl=$(InstallUrl);UpdateUrl=$(UpdateUrl);ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision);ApplicationRevision=$(Revision);IsWebBootstrapper=true;BootstrapperEnabled=true;PublisherName=$(Company);ProductName=$(Product)</PublishArgs> 
     </PropertyGroup> 
     <MSBuild 
      Projects="$(BuildInputDir)\VeodinKeyRocket\VeodinKeyRocket.csproj" 
      Targets="Clean" 
      Properties="$(PublishArgs)" /> 
     <MSBuild 
      Projects="$(BuildInputDir)\VeodinKeyRocket\VeodinKeyRocket.csproj" 
      Targets="Rebuild" 
      Properties="$(PublishArgs)" /> 
     <MSBuild 
      Projects="$(BuildInputDir)\VeodinKeyRocket\VeodinKeyRocket.csproj" 
      Targets="Publish" 
      Properties="$(PublishArgs)" /> 
    </Target> 

    <Target Name="Upload_FTP" Condition=" '$(UploadMethod)' == 'FTP'">  
     <Message Text="-------------------------------------------------------------------------------------------------------------------"/> 
     <Message Text="Uploading to $(ftpHost)/$(ServerDir)" /> 
     <FtpUploadDirectoryContent 
      ServerHost="$(ftpHost)" 
      Port="21" 
      Username="$(ftpUser)" 
      Password="$(ftpPass)" 
      LocalDirectory="$(PublishOutputDir)" 
      RemoteDirectory="$(ServerDir)" 
      Recursive="true" /> 
    </Target> 


    <Target Name="Build" DependsOnTargets="Clean;Publish;Upload_FTP;"> 
     <Message Text="Clean;Publish;Upload_FTP;"/> 
    </Target> 

</Project> 
関連する問題