VisualStudio 为 .NET Core 生成 Dockerfile,如下所示:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["src/Sandbox/Sandbox.csproj", "src/Sandbox/"]
RUN dotnet restore "src/Sandbox/Sandbox.csproj"
COPY . .
WORKDIR "/src/src/Sandbox"
RUN dotnet build "Sandbox.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Sandbox.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Sandbox.dll"]
Run Code Online (Sandbox Code Playgroud)
SDK 分为三个不同的步骤:
看起来它可以简化为一个publish阶段并得到如下所示的结果:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR …Run Code Online (Sandbox Code Playgroud) 我目前正在寻找如何在 docker 容器内测试我的 .net core 单元/集成测试项目的方法。
我已经知道dotnet test并且知道如何创建正确的 Dockerfile 来使其正常工作,但我正在寻找一种直接通过 VS2019 执行此操作的方法,而不是通过 cli 或 vs code 执行此操作。
我想这样做是为了潜在地调试单元测试,以及利用很好的 VS 单元测试会话概述。
本质上,我必须教授嵌入式单元测试启动/调试按钮来触发 dotnet 测试,并可能附加调试器。
有什么办法可以做到这一点吗?
unit-testing visual-studio docker .net-core visual-studio-2019
我为现有库 ( wiringPi )编写了一些包装器代码来读取温度传感器,但最终在使用该库时出错。
我的包装库看起来像:
#ifndef mylib_h__
#define mylib_h__
extern void read_sensor();
#endif
Run Code Online (Sandbox Code Playgroud)
#include "mylib.h"
#include <wiringPi.h>
void read_sensor() {
//here is the first call on the wiringPi lib
if (wiringPiSetup() == -1)
exit(1);
...
}
Run Code Online (Sandbox Code Playgroud)
然后我使用 gcc 来编译我的库:
gcc -Wall -Werror -fPIC -c mylib.c
gcc -shared -o libmylib.so mylib.o -lwiringPi
cp libmylib.so /usr/lib/
Run Code Online (Sandbox Code Playgroud)
提示:在正常使用此库的 C 程序的情况下,一切正常。
现在有我的 C# 程序用来从这个库中PInvoke调用read_sensor():
class Program
{
[DllImport("wiringPi")]
static extern int wiringPiSetup();
[DllImport("mylib")]
static extern void …Run Code Online (Sandbox Code Playgroud) 我已在docker中成功运行了一个简单的dotnet core 2.1 Web API应用程序,但希望在自定义帐户下而不是root下运行它,因为这是最佳实践。
我可以添加一个帐户并更改为该帐户,但是Kestral会在启动时引发错误。
我在网上反复搜索,找不到任何解决方案。
这是Docker文件。
FROM sel-docker.artifactory.metro.ad.selinc.com/microsoft/dotnet:2.1.500-sdk-
alpine3.7 AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM sel-docker.artifactory.metro.ad.selinc.com/microsoft/dotnet:2.1.6-
aspnetcore-runtime-alpine3.7
# Create a group and user
RUN addgroup -S -g 1000 customgroup \
&& adduser -S -u 1000 -G customgroup -s /bin/sh customuser
WORKDIR /app
RUN mkdir -p …Run Code Online (Sandbox Code Playgroud) .net-core ×4
docker ×3
c# ×2
asp.net-core ×1
dockerfile ×1
pinvoke ×1
raspberry-pi ×1
unit-testing ×1