2017-08-24 74 views
11

我得到一個錯誤試圖用我的.NET 2.0的核心項目使用泊塢窗功能工作。我已經得到一個錯誤信息說如何讓泊塢窗工具箱與.NET 2.0的核心項目

的Visual Studio工具的容器需要多克在運行之前 建設,調試和運行的集裝箱項目。欲瞭解更多信息, 請參閱:http://aka.ms/DockerToolsTroubleshooting

我跟着鏈接,並在意識到我有Windows 10家64位,而不得不安裝多克爾工具箱,而不是多克爾對於Windows。現在,它安裝在該可執行文件,稱爲

泊塢快速啓動終端

這是應該啓動該碼頭工人服務的方式嗎?我試着運行這個可執行文件,它似乎在工作。我的容器正在運行,但Visual Studio容器工具的錯誤仍然存​​在。

我錯過了什麼?爲了在Visual Studio 2017中使用Docker容器支持,是否需要比Home更高版本的Windows?

UPDATE:

我試圖按照Quetzcoatl的建議,並且我仍然得到關於這些工具Visual Studio中同樣的錯誤。以下是我在Docker快速入門終端中運行的內容。在Visual Studio成功打開該項目後,我嘗試構建該項目,並且仍然收到有關容器工具的上述錯誤。

我的devenv.exe文件位於

C:\ Program Files文件(x86)的\微軟的Visual Studio \ 2017年\社區\ Common7 \ IDE \ devenv.exe的

和我解決方案文件位於

d:\開發\的Visual Studio \ Musify2 \ Musify2 \ Musify2.sln

enter image description here

更新2:

我跑了一些建議的命令,在泊塢窗快速入門終端,試圖在這裏是那些命令的結果quetz enter image description here

+0

題外話題,但您將有更好的Docker for Windows體驗。任何更新到Windows 10專業版的機會? –

+0

我當時希望不必花費100美元升級。再次,根據Windows文檔,Docker Toolbox應該足以實現相同的結果,但是,這個問題似乎表明了不同的體驗。 – ddeamaral

+0

你是否設法讓它運行?我剛剛在快速入門中查看了截圖和env-vars,看起來很好。如果你從裏面運行VS,它應該能夠讀取它們,然後打開/構建解決方案應該沒問題。一旦你運行VS,你可以用ProcessHacker2來檢查它,看看VS進程是否從這個控制檯繼承了這些env-vars。如果是這樣,錯誤應該消失,因爲這些都是關於構建期間丟失的變量。 – quetzalcoatl

回答

8

隨着碼頭工人工具箱,這是一個小棘手的,但實際上核心2.0在這裏沒有任何關係。關於碼頭工人,碼頭工具箱和VS.

首先:

這是一個應該啓動該碼頭工人服務的方式?我試着運行這個可執行文件,它似乎在工作。

是的。如果碼頭機/服務正在運行 - 那很好!

現在,您必須認識到,在碼頭工人中,碼頭工人如何/在哪裏運行的信息保存在環境變量中。該quickstart腳本不僅啓動泊塢窗機爲您和檢查一些基本的東西,它也設置了幾個環境變量以便以後像dockerdocker-compose等所有命令知道去哪裏找的搬運工虛擬機。在我們的例子中,信息主要由VM的IP和Docker偵聽的端口號組成。

..你的Visual Studio沒有這方面的知識,因爲我敢打賭,你已經從StartMenu或桌面圖標或雙擊解決方案文件運行VisualStudio,所以它沒有機會從quickstart控制檯獲取環境變量。

解決方案很簡單:確保VS獲取該信息。也就是說,要確保它獲取環境變量,確保它得到他們的新鮮狀態,因爲IP /端口有時可能會出現波動。所以不要將它們複製到您的操作系統設置,因爲沒有什麼會自動刷新它們。

我發現的最簡單的方法就是關閉Visual Studio,運行docker工具箱快速入門控制檯,然後從內部運行VisualStudio該控制檯,例如,我的VS2017社區版:

Starting "default"... 
(default) Check network to re-create if needed... 
(default) Waiting for an IP... 
(.......snip..........) 


         ##   . 
        ## ## ##  == 
       ## ## ## ## ## === 
      /"""""""""""""""""\___/ === 
     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~/===- ~~~ 
      \______ o   __/ 
      \ \   __/ 
       \____\_______/ 

docker is configured to use the default machine with IP 192.168.99.100 
For help getting started, check out the docs at https://docs.docker.com 

Start interactive shell 
[email protected] MINGW32 ~ 
$ /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/Community/Common7/IDE/devenv.exe C:\\PATH\\TO\\MY\\SOLUTION.sln 

的路徑是相當長寫的,即使有TAB完成,所以通常做一個小小的.sh腳本來運行我。

順便說一句!請注意,DEVENV的路徑必須是類似unix的(/c/Program\ Files...),因爲mingw外殼必須明白,雖然SOLUTION的路徑必須是正常的Windows路徑(c:\projects\foo\bar\..),因爲VisualStudio會在啓動後嘗試讀取該路徑。

+0

你介意分享.sh腳本嗎? – ddeamaral

+0

@ destructi6n:那.SH是** **字面上只是從該屏幕的最後一行在文本的結束..'/ C /程序\文件\ \(86 \)/微軟\視覺\工作室/ 2017年/ Community/Common7/IDE/devenv.exe C:\\ PATH \\ TO \\ MY \\ SOLUTION.Sln' – quetzalcoatl

+0

我更新了原始問題。這似乎不適用於我。在Visual Studio – ddeamaral

3

這是我做過什麼讓VS 2017年Windows系統,10家泊塢窗上的工具箱。你遵循這一點,我保證它會工作。請注意,這僅適用於Windows 10家不支持原生泊塢窗for Windows應用程序:

  1. 上W10家安裝搬運工工具箱

  2. 潤泊塢窗快速入門端曾經創造泊塢窗機。這需要一段時間。而它分配IP地址和其他的東西

  3. 一旦完成它會告訴你一個命令提示符所以要耐心等待。輸入'docker-machine ip default'。記下IP地址作爲你會需要它後來

  4. 關閉快速啓動終端窗口。這只是爲了將一個微小的Ubuntu linux服務器的boot2docker.iso映像初始化爲virtualbox應用程序(又名docker-machine aka默認vm)。如果您不熟悉虛擬化技術或oracle virtualbox停止閱讀並先閱讀它們然後重新開始。但是,如果你這樣做然後很樂意繼續

  5. 正如我所提到的,你的docker-machine實例是一個Linux虛擬機,因此很明顯,你只能打開使用.net核心技術構建的項目。不幸的是完整。您需要運行Windows容器(這些容器僅在Windows 10專業版上可用),或者在virtualbox上構建自己的Windows nano服務器或2016服務器虛擬機,然後在Docker網站上使用和遵循本地Docker for Windows的步驟。從這裏開始,這個答案的其餘部分對那些想要在Linux vm/docker-machine上運行核心項目的人有幫助

  6. 打開windows管理員模式的power shell並鍵入'docker-machine ls'來確認default vm正在運行。也可以做'碼頭機器狀態默認',它應該返回'正在運行'

  7. 現在打開運行默認虛擬機的虛擬機應用程序,然後單擊設置。打開「共享驅動器」選項卡,您需要確保主機上的「c:\ Users」文件夾映射/掛載爲vm中的「c/Users」文件夾。請注意,這一步是非常重要的,缺少它會引起很多麻煩得到它的成功運行

  8. 也是一個快速的注意,你的解決方案/項目/代碼庫MUST下保存「C:\用戶\」爲它正常工作。這是如果你想使用它OOTB。我不想浪費時間在允許的路徑之外安裝文件夾。但如果你是冒險的人,請盡一切辦法弄清楚,並讓我們知道你是怎麼做的

  9. 現在正如Quetzalcoatl正確提到VS需要知道這個碼頭機。發生的唯一方法是如果設置了環境變量。因此,請繼續運行此命令「docker-machine env deault |」 Invoke-Expression「在PowerShell窗口中。這是魔法醬,可以很好地與碼頭機器相配合

  10. 繼續並通過dbl單擊項目解決方案或創建新項目/解決方案來打開VS。 在Powershell中,使用'start'命令打開現有的vs解決方案或新的vs實例。專業提示:如果您創建了新的解決方案請不要在選擇項目模板類型時選擇Linux docker選項。一旦您的解決方案已完成設置並準備就緒,您可以完全添加Docker支持。事實上的事實讓它不受控制,讓我們創造你的解決方案。通過這種方式,您將有機會在IIS Express或自託管模式下構建和運行您的解決方案,以查看您的core2.0是否可以正常工作

  11. 一旦滿意,一切正常並且您現在看到了OOTB主頁,現在可以通過點擊你的項目添加docker支持,將鼠標懸停在Add上,然後點擊'Add Docker Support'。這將創建一個新的碼頭項目(.dcproj)並添加一堆碼頭相關文件

  12. 現在我不打算進入Docker的本質,但是您會注意到您的項目不再是啓動和新創建的碼頭項目。這是完全正常和有意的行爲。這意味着您已經準備好使用碼頭集裝箱啓動您的應用程序。所以,繼續點擊「Docker」按鈕,看看你的努力工作最終會得到回報。再次耐心,因爲它需要一段時間來建立圖像和旋轉容器,但一旦完成,vs將開始並附加調試器

  13. 在這裏,你會再次失望,感到毫無價值,因爲當瀏覽器打開一個新的窗口或標籤會出現頁面無法訪問的錯誤。原因是瀏覽器地址指向本地主機,而不是Web服務器了。您的「網絡服務器」現在是您的碼頭集裝箱,因此您需要用上面檢索的IP地址替換localhost。端口號保持原樣。一旦你提交了頁面,你將會感到欣慰並欣喜若狂,看到主頁/路由工作。這也應該啓用調試,如果由於某種原因它不然,那麼您可能需要刪除c:\ Users \文件夾中名爲.vsdbg的文件夾並重新運行應用程序。