2011-10-10 90 views
1

我在同一個VS解決方案中有9個應用程序。所有通過Clickonce部署(到同一主機內的不同位置),目前我需要右鍵單擊並執行所有發佈嚮導。但我在考慮是否有一種使用腳本的自動化方法(理想情況下,我可以只寫主機密碼(用於FTP))。從Visual Studio中的腳本生成併發布(ClickOnce)

這可能嗎?

謝謝。

回答

2

是的,這是可能的,我們使用MS Build發佈通過點擊一次,並通過FTP上傳。

谷歌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> 
相關問題