小编Oma*_*jid的帖子

为什么在 VisualStudio 为 .NET Core 自动生成的 dockerfile 中发布之前需要恢复和构建

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)

c# visual-studio docker .net-core asp.net-core

8
推荐指数
1
解决办法
2662
查看次数

有没有办法通过VS2019在docker容器中运行.net core单元测试?

我目前正在寻找如何在 docker 容器内测试我的 .net core 单元/集成测试项目的方法。

我已经知道dotnet test并且知道如何创建正确的 Dockerfile 来使其正常工作,但我正在寻找一种直接通过 VS2019 执行此操作的方法,而不是通过 cli 或 vs code 执行此操作。

我想这样做是为了潜在地调试单元测试,以及利用很好的 VS 单元测试会话概述。

本质上,我必须教授嵌入式单元测试启动/调试按钮来触发 dotnet 测试,并可能附加调试器。

有什么办法可以做到这一点吗?

unit-testing visual-studio docker .net-core visual-studio-2019

6
推荐指数
1
解决办法
251
查看次数

.net core - PInvoke C 共享库函数,它依赖于另一个共享库

我为现有库 ( wiringPi )编写了一些包装器代码来读取温度传感器,但最终在使用该库时出错。

我的包装库看起来像:

mylib.h

#ifndef mylib_h__
#define mylib_h__
extern void read_sensor();
#endif
Run Code Online (Sandbox Code Playgroud)

mylib.c

#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()

程序.cs

class Program 
{
    [DllImport("wiringPi")]
    static extern int wiringPiSetup();

    [DllImport("mylib")]
    static extern void …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke shared-libraries raspberry-pi .net-core

5
推荐指数
1
解决办法
1129
查看次数

如何以非超级用户身份在Linux上的Docker中运行.NET Core 2应用程序

我已在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)

docker .net-core dockerfile

4
推荐指数
2
解决办法
1478
查看次数