2016-01-06 34 views
1

這個問題可以被認爲是兩年前的一個更新,問如何從visual studio 2015中的開放ASP.NET Core解決方案(then called ASP.net vnext,簡稱爲ASP.NET 5)發佈到我的本地網絡中的另一臺機器上,其中部署了IIS,並且應該用它來運行我正在編寫的DNX運行時和ASP.NET應用程序。由於該向導不爲我提供任何幫助,我相信我將不得不完全手動配置MSDEPLOY解決方案及其配置文件,或與其等效的其他內容。如何從Visual Studio 2015(+ U1)ASP.NET Core發佈到Windows Server 2012 R2上的IIS?

自原來的問題以來,情況發生了很大變化,所以我要求提供ASP.NET 5和DNX 1.0 RC1。

還有一些related其他questions,要求如何做到這一點,並提到WebDeploy 3.6,也指近2年前的測試版本。

因此,我相信這個問題對於Visual Studio 2015應該有一個新的和不同的答案,現在ASP.NET 5已經發布了候選版本並且功能完整。現在怎麼做?

還應該清楚我說的不是從我的Visual Studio解決方案上C:\DEV\WORKINGCOPY部署到我自己的機器的c:\inetpub\wwwroot,而是通過網絡複製,無論是通過網絡DAV或FTP或SMB共享,​​以運行IIS的Windows Server框。

我迄今爲止嘗試:

  • 使用內置在文件系統的方式發佈到Web嚮導。結果似乎是可以通過web.cmd運行的,它將執行dnx和kestrel,但不會構建可從Windows Server 2012上的IIS 8.x運行的軟件包。此外,發佈到文件系統模式會創建一堆的東西,包括一組名爲approot,logs和wwwroot的基本文件夾,我很確定IIS不應該設置爲直接提供approot或logs文件夾。如果我從IIS中查看我的wwwroot \文件夾副本,則發現500內部服務器錯誤。這就是我期望IIS在不知道如何將web.config放在那裏並對它做任何事情時所要做的事情。

  • 試圖從命令提示符下手動使用dnu publishdnu pack,想到也許我可以使用結果來替換我的XYZ-publish.ps1 powershell文件PublishProfiles的內容。 dnu發佈命令失敗,「bower未被識別爲內部或外部命令」。 dnu包成功了,但我不知道如何處理所產生的.nupkg文件以使它們在IIS上運行。

我的總體目標是:

  • 擁有一切在一次點擊或者輸入一個指令,包括任何預編譯組件的任何捆綁和建築物進行(的NuGet包作爲v下一個與Assemblies inclassic .net相同的概念)。

  • 爲了讓自己和其他讀者清楚,在您準備部署之前,一次性在IIS上設置的任務是什麼,以及每次單擊發布時爲您完成的任務以及如何設置他們了。

這似乎是ASP的文檔的基本領域。目前,.NET 5的功能非常弱,目前該工具僅針對那些想要將文件包部署到文件夾並從「dnx web」(kestrel)運行的用戶或想要在Azure上部署的用戶進程在發佈嚮導中完全自動化),而不是那些希望部署到運行IIS的計算機的人。發佈嚮導缺少這種非常明顯的(對我來說)的情況;發佈到我自己的Windows服務器框,並創建任何IIS腳手架,我需要這個工作。

+0

如果downvoters可以指出這個問題有什麼問題,這將不勝感激。 –

+0

涼亭工具似乎不與Visual Studio一起分發。要安裝NodeJs,然後輸入'npm install bower -g'來安裝bower,並將其作爲路徑中的命令行工具訪問,則可能需要手動將'c:\ users \ youraccountname \ appdata \ roaming \ npm'添加到你的路徑 –

+1

我認爲這個想法是你通過腳本結合這些東西。 IOW,你創建一個運行bower/npm/gulp等的腳本,然後將dnu發佈到本地或網絡位置,並可選擇發佈。儘管今天的IIS故事非常糟糕。當前讓IIS上的DNX應用程序破壞是一種痛苦。我懷疑這會在RC2中用新的工具解決,如果不是,那麼肯定會通過發佈。 –

回答

2

更新:Microsoft's Connect 2015 demo suite called Healthcare.biz包含基於powershell的部署方案(適用於azure),可能適用於本地IIS服務器。請參閱該GitHub倉庫中的PublishAspNet5Website.ps1 powershell腳本。

這個問題有很多元素,我找不到任何一個來源來確定它們。

  1. 首先進行一些設置你的IIS服務器上是必需的,因爲每this question,您必須選擇將用於運行DNX/ASP.NET 5應用程序的應用程序池。您還應該創建一個虛擬文件夾,然後將其轉換爲應用程序。根據該鏈接的問題,你應該使用.NET 4池。 IIS服務器上的其他設置可能包括設置服務器端工具以接受來自Visual Studio(IDE內部)和msbuild命令行(持續集成服務器)部署工具的傳入發佈請求。

  2. 因爲進入Visual Studio 2015的嚮導(包括更新1中的嚮導)沒有提供諸如「部署到您的域上的Windows Server」之類的選擇,您將不得不研究現有選項,如文件模式部署選項和Azure部署選項,並根據這兩個起點之一選擇一些混合方法。您的資產包括PowerShell的所有功能,以及dnx/dnu工具的所有功能,包括其整合功能。您將根據需要進行捆綁/編譯/編譯,然後將結果一起發送到MSDEPLOY工具,然後您需要爲其配置(.pubxml)文件。您還可以選擇完全忽略DEPLOY命令,並選擇通過添加到dnx項目中的「分段」動詞進行部署,以部署到分段服務器。

  3. 爲了有任何希望將微型起始文件集修改爲執行問題中指定作業所需的條件,您可能需要閱讀MSDEPLOY上的文檔。在互聯網上搜索我發現,有一些示例.pubxml文件here,那裏顯示如何構建.pubxml。在部署配置文件文件夾中,至少需要一個正確構造的.pubxml文件和另一個具有相同基本名稱的文件,而擴展名爲.ps1(powershell),而不管您使用哪種技術,所以我認爲它存在的唯一原因是您可以在PowerShell中完成其他任務。

樣品.pubxml內容

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
NOTE: I'm pretty sure that the publishprovider should NOT be the one shown here. 
I do not know what it should be and will update this answer when I figure that fact out. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>MSDeploy</WebPublishMethod> 
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect> 
    <PublishProvider>AzureWebSite</PublishProvider> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish>http://ramsoftazurewebappdemo.azurewebsites.net</SiteUrlToLaunchAfterPublish> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <CompileSource>False</CompileSource> 
    <_DefaultDNXVersion>dnx-clr-win-x86.1.0.0-rc1-update1</_DefaultDNXVersion> 
    <UsePowerShell>True</UsePowerShell> 
    <IISCommand>web</IISCommand> 
    <WebRoot>wwwroot</WebRoot> 
    <WwwRootOut>wwwroot</WwwRootOut> 
    <IncludeSymbols>False</IncludeSymbols> 
    <Native>False</Native> 
    <IgnoreDNXRuntime>False</IgnoreDNXRuntime> 
    <MSDeployServiceURL>myservername.mydomain.biz:443</MSDeployServiceURL> 
    <DeployIisAppPath>MyWebAppPath</DeployIisAppPath> 
    <RemoteSitePhysicalPath /> 
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> 
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> 
    <EnableMSDeployBackup>True</EnableMSDeployBackup> 
    <UserName>$USERNAME</UserName> 
    <_SavePWD>True</_SavePWD> 
    <_DestinationType>AzureWebSite</_DestinationType> 
    </PropertyGroup> 
</Project> 
  • 它可能不會傷害到熟悉命令行選項可供MSDEPLOY直接,你可以調用自己,從該powershell ps1腳本,而不是使用.pubxml格式。下面是MSDEPLOY.EXE(在查找文檔時也稱爲Microsoft Web Deploy V3在線)的示例:
  • "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" 
        -source:IisApp='C:\dev\PublishOut\YourWebApp\wwwroot 
        -dest:IisApp='YourIisAppName', 
        ComputerName='https://yourcomputername.yourdomain.biz/msdeploy.axd', 
        UserName='$USERNAME', 
        Password='secr3t', 
        IncludeAcls='False',AuthType='Basic' 
        -verb:sync -enableLink:contentLibExtension 
        -enableRule:DoNotDeleteRule -retryAttempts:3 
    
  • 如果你還沒有嘗試過呢,習慣了vNext中dnu packdnu publish選項點淨效用(DNU)命令。這就是如何將您的ASP.NET源文件與DNX運行時副本一起捆綁起來,以便它可以在服務器端運行。對我而言,我無法使用dnu publish命令,該命令似乎是一個客戶端資源發佈階段,它依賴於node.js(javascript)工具默認的名爲bower的工具,我發現我必須手動安裝爲Visual Studio 2015 asp.net 5模板依賴於這個工具,但似乎並沒有默認安裝它(也許我錯過了一個選項,當我安裝Visual Studio,我會更新這個答案,如果是這樣的話)。
  • 隨着更多細節匯聚在一起,我將繼續完善並擴展此答案。目前,我正在通過tutorials進行跟蹤,討論在部署到Azure或商業Internet託管問題時如何執行此操作,並且我會嘗試將它們調整到內部服務器,您還負責配置IIS服務器以及任何必須在IIS服務器上配置的發佈代理軟件。

    相關問題