首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >由于找不到应用程序或没有安装兼容的.NET SDK,所以无法执行。

由于找不到应用程序或没有安装兼容的.NET SDK,所以无法执行。
EN

Stack Overflow用户
提问于 2021-04-07 07:09:54
回答 6查看 31K关注 0票数 15

我使用ASP.NET核心5创建了一个基本的Rest,我想要用它来运行。该应用程序在IIS Express上运行良好。

https://learn.microsoft.com/fr-fr/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio

为了启动应用程序,我还想创建一个docker容器。

在项目文件夹中,我创建了一个带有多个文件的Docker文件夹。这里是我的App.dockerfile:

代码语言:javascript
运行
AI代码解释
复制
FROM mcr.microsoft.com/dotnet/aspnet:5.0

ARG WEBAPP_VERSION=0.0.1
LABEL maintainer=anymail@email_server.com \
    Name=webapp \
    Version=${WEBAPP_VERSION}
ARG URL_PORT
WORKDIR /app
ENV NUGET_XMLDOC_MODE skip
ENV ASPNETCORE_URLS http://*:${URL_PORT}
ENTRYPOINT [ "dotnet", "WebApplication.dll" ]

我还有一个Build.docker文件:

代码语言:javascript
运行
AI代码解释
复制
FROM mcr.microsoft.com/dotnet/aspnet:5.0
## Can be Debug or Release.
ARG BUILD_CONFIG=Debug
ARG BUILDER_VERSION=0.0.1
LABEL maintainer=some_email@email_server.com \
    Name=webapp-build-${BUILD_CONFIG} \
    Version=${BUILDER_VERSION}
## Will be the path mapped to the external volume.
ARG BUILD_LOCATION=/app/out
ENV NUGET_XMLDOC_MODE skip
WORKDIR /app
COPY *.csproj .
RUN dotnet restore
COPY . /app
RUN dotnet publish --output ${BUILD_LOCATION} --configuration ${BUILD_CONFIG}

最后,我有了一个对接者-Compose.yml

代码语言:javascript
运行
AI代码解释
复制
version: '3'
services:
  webapp:
    container_name: webapp.test
    image: webapp:${WEBAPP_VERSION}
    build:
      context: ../
      dockerfile: ./Docker/App.dockerfile
      args:
        WEBAPP_VERSION: ${WEBAPP_VERSION}
        URL_PORT: ${URL_PORT}
    ports:
      - "5000:${URL_PORT}"
    volumes:
      - appbuild:/app
    links:
      - mysql
    environment:
      MYSQL_SERVER_NAME: ${MYSQL_SERVER_NAME}
    env_file:
      - secrets.env
    depends_on:
      - builder
  
  builder:
    container_name: builder
    image: webapp:${BUILDER_VERSION}.${BUILD_CONFIG}
    build:
      context: ../
      dockerfile: ./Docker/Build.dockerfile
      args:
        BUILDER_VERSION: ${BUILDER_VERSION}
        BUILD_CONFIG: ${BUILD_CONFIG}
        BUILD_LOCATION: ${BUILD_LOCATION}
    volumes:
      - appbuild:${BUILD_LOCATION}
   
  mysql:
    container_name: ${MYSQL_SERVER_NAME}
    image: mysql/mysql-server:8.0.23
    restart: always
    volumes:
      - dbvol:/var/lib/mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: root
    env_file:
      - secrets.env

volumes:
  appbuild:
  dbvol:

最后,启动以下命令行:

代码语言:javascript
运行
AI代码解释
复制
docker build -f Docker/App.dockerfile -t webapp:Debug --build-arg URL_PORT=7909 .

这个过程相当快。我还启动了以下命令行:

代码语言:javascript
运行
AI代码解释
复制
docker run --name webapp.test -p 5000:7909 -it webapp:Debug

我不幸地得到了一条错误信息。

代码语言:javascript
运行
AI代码解释
复制
Could not execute because the application was not found or a compatible .NET SDK is not installed.
Possible reasons for this include:
  * You intended to execute a .NET program:
      The application 'WebApplication.dll' does not exist.
  * You intended to execute a .NET SDK command:
      It was not possible to find any installed .NET SDKs.
      Install a .NET SDK from:
        https://aka.ms/dotnet-download
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-04-07 08:54:54

您的使用ASP.NET核心运行时容器映像:

代码语言:javascript
运行
AI代码解释
复制
FROM mcr.microsoft.com/dotnet/aspnet:5.0

这个容器没有SDK,只有运行时。当您构建它时,它会失败:

代码语言:javascript
运行
AI代码解释
复制
RUN dotnet restore
代码语言:javascript
运行
AI代码解释
复制
Could not execute because the application was not found or a compatible .NET SDK is not installed. and The application 'restore' does not exist

因为dotnet restore命令是SDK命令。如果您只是使用运行时,它是不可用的。

您应该将SDK容器用于构建Dockerfile (而不是运行时Dockerfile,这很好):

代码语言:javascript
运行
AI代码解释
复制
FROM mcr.microsoft.com/dotnet/sdk:5.0
票数 25
EN

Stack Overflow用户

发布于 2021-10-18 03:58:34

如果您已经安装了SDK,并且您有x64机器;

System Variables > Path中删除以下项目

代码语言:javascript
运行
AI代码解释
复制
C:\Program Files (x86)\dotnet

票数 17
EN

Stack Overflow用户

发布于 2021-12-22 01:39:26

在我的例子中,点网络SDK被安装在不同的位置。powershell上的一个简单where.exe dotnet返回以下内容

在系统环境变量中有两个条目,即带有x86的条目在上面,所以它是优先的,所以我交换了这两个条目,并使它们开始工作。特别感谢https://www.hanselman.com/blog/dotnet-could-not-execute-because-the-application-was-not-found-or-a-compatible-net-sdk-is-not-installed

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66988943

复制
相关文章
如何更改SELinux模式
Security Enhanced Linux是一个Linux安全模块,用于强制或基于角色的访问控制。SELinux默认与CentOS和Fedora打包在一起,可以以三种模式之一运行:禁用、允许或强制执行。
温浪
2018/08/20
4.3K0
Audition如何更改音轨独奏模式 Audition更改音轨独奏模式方法【干货】+各版本安装
各版本安装获取:http://jiaocheng8.top/au.html?0ijggjk Audition是一款特别专业的电脑端音频处理软件,软件时Adobe旗下发布的,软件的兼容性非常高,能够支持
木子学Lee
2023/02/09
7980
Audition如何更改音轨独奏模式 Audition更改音轨独奏模式方法【干货】+各版本安装
更改WordPress Gutenberg编辑器的宽度
要更改WordPress Gutenberg编辑器的宽度,您需要为其加载自定义CSS规则。以下是如何快速更改宽度的概述,包括加载样式表和添加将增加Gutenberg编辑器内容区域宽度的特定规则。
许都博客
2021/06/16
8560
13 - 如何让两个列表首尾相接
1. 连接两个列表的方式有哪些? # 1. '+' a = [1, 3, 5, 6, 7] b = [2, 3, 3, 6, 8] print(a + b) # 2. extend a.extend(b) print(a) [1, 3, 5, 6, 7, 2, 3, 3, 6, 8] [1, 3, 5, 6, 7, 2, 3, 3, 6, 8] # 元组:'+' # 元组本身是只读的,没有extend方法 c = (1, 2, 3) d = (2, 3, 3, 4) print(c + d) (1,
ruochen
2021/05/22
6240
13 - 如何让两个列表首尾相接
PHPCMS更改后台编辑器样式
PHPCMS默认的后台样式用着不习惯,根前台的视觉差太大?没关系,改一下就是了。 后台编辑器样式文件 staticsjsckeditorcontents.css 把前台样式表中控制文字的那一部分拷贝进去稍微修改下即可,当然你可以自定义编辑器背景什么的,看个人喜好了。 我自己比较喜欢的样式现在分享给大家
李维亮
2021/07/09
1.4K0
CSS样式更改——列表、表格和轮廓
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。
前端皮皮
2020/11/26
2.9K0
如何使用 Python 检查两个列表是否反向相等?
在 Python 中使用列表时,在某些情况下,您可能需要比较两个列表是否反向相等。这意味着一个列表中的元素与另一个列表中的元素相同,但顺序相反。在 Python 中,我们可以使用反转和比较列表、使用 zip() 函数、将列表转换为字符串等方法检查两个列表是否反向相等。在本文中,我们将了解这些方法,并借助各种示例检查两个列表是否反向相等。
很酷的站长
2023/08/11
2110
如何使用 Python 检查两个列表是否反向相等?
青铜和黄金选手分别怎么玩转python列表?
举个例子哈,将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]中每个数字都乘以2,你能想到几种方法?
朱小五
2020/02/20
2880
青铜和黄金选手分别怎么玩转python列表?
仿 iOS 列表的编辑功能 - 删除篇
在 iOS 的设置里面,有一种编辑的效果,进入编辑状态后,列表左边推出圆形的删除按钮,点击后再出现右边确认删除按钮,相当于给用户二次确认。看下在 Android 上如何实现。
NanBox
2019/07/09
9680
更改开发编辑器背景图片
按快捷键Ctrl+Shift+A出现一个对话框 输入Set Background Image 双击Set Background Image 选择要添加的图片的路径 设置透明度 点击OK 就可以查看效果了
院长技术
2020/11/11
9930
如何更改伪元素的样式
在前端开发中我们会经常用到伪元素,有时候需要通过js来修改伪元素的样式,那么有哪几种方式来修改伪元素的样式呢?
挥刀北上
2021/01/27
9.4K0
如何更改伪元素的样式
vim的编辑模式,命令模式以及vim的实践
vim编辑模式:               从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可,当进入编辑模式时,在屏幕的尾行显示INSERT字样(若支持中文,则显示插入)。按Esc键,从编辑模式回到一般模式。              i(小写) 从目前光标所在处插入。              I (大写)从目前光标所在处第一个非空格开始插入。              a 从光标所在处的下一个字符开始插入。              A 从光标所在处行的最后一个字符卡是插入
叶瑾
2018/06/14
1.6K0
我有两个列表,现在需要找出两个列表中的不同元素,怎么做?
前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,这里拿出来跟大家一起分享,后面再次遇到的时候,可以从这里得到灵感。
Python进阶者
2023/03/02
3.3K0
我有两个列表,现在需要找出两个列表中的不同元素,怎么做?
[Linux] 更新源地址列表及更改方法 [Ubuntu 16.04 LTS]
在修改source.list前,最好先备份一份,以便日后恢复 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 修改更新源:sudo gedit /etc/apt/sources.list 最后执行更新命令:sudo apt-get update
轻舞飞扬SR
2021/02/24
1.3K0
vim 列编辑模式
vim 有三种编辑模式,命令模式、输入模式、视窗模式,我们常用的是前两种模式,但是视窗模式还是非常不错的,进入 vim 编辑器,模式是命令模式,可以通过 i、a 等进入输入模式,也可以通过 v、 c+v 进入视窗模式。
王清培
2019/07/01
3.2K0
vim 列编辑模式
如何更改 Ubuntu 的终端的颜色
但是,如果你想要一个独一无二的的终端体验或者符合你自身品位的一些东西,你也可以改变你的 Ubuntu 的终端的颜色。
用户1880875
2021/11/08
14.7K0
小知识:vi如何使用列编辑模式快速插入
经常需要用到列编辑这种操作,现在很多超文本的编辑器都可以轻松实现。 但有时需要在vi界面直接使用,但是vi的列编辑操作因不常使用总是忘记现查。 这次干脆记录下加深印象。 vi编辑某个文本时,比如修改一个oracle的参数文件,历史实验时取的实例名字是jyzhao, 如今实验我已经成功改成prod了,如下:
Alfred Zhao
2022/06/02
1.4K0
取两个列表的交集_js两个数组取差集
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
3.5K0
点击加载更多

相似问题

两个日期选择片段-如何分别编辑日期?

24

SwiftUI -列表编辑模式-如何更改删除按钮标题?

26

SwiftUI -如何在编辑模式下更改列表的背景

18

更改列表项处于编辑模式时的高度

10

函数返回两个列表,如何分别保存?

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文