简介
这就像本文的续篇。
使用docker构建代码服务器,然后尝试在其中创建C#环境。
代码服务器_1
创建以下目录。
1 2 | ls > Dockerfile code-server docker-compose.yml projects |
Dockerfile和docker-compose.yml看起来像这样。
我正在使用官方的docker-image在那里安装.net core。
<详细信息>
Docker文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | FROM codercom/code-server:3.8.0 USER root # Install wget and other module RUN apt-get update && apt-get install -y \ wget # Install code-server plugin # ※commandからのextension installは効かない? RUN code-server --install-extension ms-dotnettools.csharp # Install .NET5 ENV DOTNET_ROOT=/usr/share/dotnet ENV PATH=/usr/share/dotnet:/root/.dotnet/tools:$PATH # 以下の環境変数を変える必要あり # 詳細1: https://github.com/dotnet/core/issues/2186 # 詳細2: https://github.com/dotnet/core/blob/master/Documentation/build-and-install-rhel6-prerequisites.md ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/a0487784-534a-4912-a4dd-017382083865/be16057043a8f7b6f08c902dc48dd677/dotnet-sdk-5.0.101-linux-x64.tar.gz \ && wget -O dotnet_runtime.tar.gz https://download.visualstudio.microsoft.com/download/pr/6bea1cea-89e8-4bf7-9fc1-f77380443db1/0fb741b7d587cce798ebee80732196ef/aspnetcore-runtime-5.0.1-linux-x64.tar.gz \ && dotnet_sha512='398d88099d765b8f5b920a3a2607c2d2d8a946786c1a3e51e73af1e663f0ee770b2b624a630b1bec1ceed43628ea8bc97963ba6c870d42bec064bde1cd1c9edb' \ && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ && dotnet_runtime_sha512='fec655aed2e73288e84d940fd356b596e266a3e74c37d9006674c4f923fb7cde5eafe30b7dcb43251528166c02724df5856e7174f1a46fc33036b0f8db92688a' \ && echo "$dotnet_runtime_sha512 dotnet_runtime.tar.gz" | sha512sum -c - \ && mkdir -p "/usr/share/dotnet" \ && mkdir -p "/usr/bin/dotnet" \ && mkdir -p "/root/.dotnet/tools" \ && tar zxf dotnet.tar.gz -C "/usr/share/dotnet" \ && rm dotnet.tar.gz \ && tar zxf dotnet_runtime.tar.gz -C "/usr/share/dotnet" \ && rm dotnet_runtime.tar.gz \ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \ && dotnet help USER coder |
详细信息>
<详细信息>
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | version: "3" services: code: build: context: . dockerfile: Dockerfile restart: always environment: PUID: 1000 PGID: 1000 PASSWORD: password ports: - 20000:8080 volumes: - ./projects:/home/coder/project - ./code-server:/home/coder/.local/share/code-server |
详细信息>
开始。
1 | docker-compose up -d --build |
访问
URL。
我打算在Dockerfile中使用此命令添加C#扩展。
好像不是在吗?是。
即使我从终端以相同方式命中该命令,该命令也未反映在UI中。
1 | RUN code-server --install-extensions ms-dotnettools.csharp |
别无选择,只能手动添加扩展名。
我提出了三个主要建议。
让我们做一个合适的项目。
1 2 3 | dotnet new console -o tutorial ls > Program.cs tutorial.csproj |
在
教程文件夹下添加文件。
可以使用C#扩展名,但是它没有生成文件。
由于无法帮助,因此在常规文件创建中将其命名为
Program.cs和Calc.cs应具有以下内容。
<详细信息>
计算
1 2 3 4 5 6 7 8 9 10 11 12 | using System; namespace tutorial2 { class Calc { public static double Add(double a, double b) { return a + b; } } } |
详细信息>
<详细信息>
Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | using System; using tutorial2; namespace tutorial { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); var ret = Calc.Add(1, 3); Console.WriteLine($"Cal Result is {ret}"); } } } |
详细信息>
尝试从
终端运行它。
我能够执行它。
调试如何?
在launch.json中指定.Net Core Launch,设置一个断点并执行它。
???在调试控制台中显示以下错误。
查看此URL,似乎调试器已获得许可,因此只能与Microsoft的IDE一起使用。
它是代码服务器问题中列出的您自己的调试器吗?似乎只有一种方法可以做到。 .. ..
此问题也已解决,因为由于许可问题而无法使用标准调试器。
代码服务器_2
由DotNetCore在
既然有图像,我也将使用它。
1 2 3 | git clone https://github.com/ptr727/VSCode-Server-DotNetCore.git cd VSCode-Server-DotnetCore docker-compose up -d # 起動 |
云9
作为奖励,我将在cloud9上进行尝试。
Dockerfile和docker-compose.yml看起来像这样。
我试图将DotNetCore放在
<详细信息>
Docker文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | FROM linuxserver/cloud9:version-1.27.4 RUN mkdir -p /code/projects # Install wget RUN apt-get update \ # Install wget && apt-get install -y wget # Install .NET5 ENV DOTNET_ROOT=/usr/share/dotnet ENV PATH=/usr/share/dotnet:/root/.dotnet/tools:$PATH ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/a0487784-534a-4912-a4dd-017382083865/be16057043a8f7b6f08c902dc48dd677/dotnet-sdk-5.0.101-linux-x64.tar.gz \ && wget -O dotnet_runtime.tar.gz https://download.visualstudio.microsoft.com/download/pr/6bea1cea-89e8-4bf7-9fc1-f77380443db1/0fb741b7d587cce798ebee80732196ef/aspnetcore-runtime-5.0.1-linux-x64.tar.gz \ && dotnet_sha512='398d88099d765b8f5b920a3a2607c2d2d8a946786c1a3e51e73af1e663f0ee770b2b624a630b1bec1ceed43628ea8bc97963ba6c870d42bec064bde1cd1c9edb' \ && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ && dotnet_runtime_sha512='fec655aed2e73288e84d940fd356b596e266a3e74c37d9006674c4f923fb7cde5eafe30b7dcb43251528166c02724df5856e7174f1a46fc33036b0f8db92688a' \ && echo "$dotnet_runtime_sha512 dotnet_runtime.tar.gz" | sha512sum -c - \ && mkdir -p "/usr/share/dotnet" \ && mkdir -p "/usr/bin/dotnet" \ && mkdir -p "/root/.dotnet/tools" \ && tar zxf dotnet.tar.gz -C "/usr/share/dotnet" \ && rm dotnet.tar.gz \ && tar zxf dotnet_runtime.tar.gz -C "/usr/share/dotnet" \ && rm dotnet_runtime.tar.gz \ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \ && dotnet help |
详细信息>
<详细信息>
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | version: "3" services: code: build: context: . dockerfile: Dockerfile restart: always environment: - PUID=1000 - PGID=1000 - TZ=Asia/Tokyo - GITURL=https://github.com/linuxserver/docker-cloud9.git #optional - USERNAME=user #optional - PASSWORD=password #optional ports: - 50000:8000 volumes: - ./projects:/code/projects - ./docker.sock:/var/run/docker.sock #optional |
详细信息>
访问
URL。
与代码服务器一样,从终端创建一个合适的项目并尝试。
我将省略它,但是像代码服务器一样,我能够正确执行
cloud9很好,因为它具有良好的智能和历史。
调试如何?
我可以设置一个断点,但是我放弃了,因为我不知道如何制作跑步者。 .. ..
看来AWS Cloud9可以做到,但是那一个呢?
结论
我认为网络本身是有用且方便的,但是
我觉得全面开发仍然很困难,因为即使在构建和扩展功能无法正常工作的情况下,也需要外围知识。
我认为可以由更高级别的人员来完成,但是我有点。 .. ..
目前,在Windows Visual Studio中安静地开发C#是否安全?
但是,在泊坞窗代码服务器或cloud9上有诸如python之类的文章,那么我可以毫无问题地使用它吗?
当我感到喜欢时,我想与pythonα一起尝试。