运行 docker 容器中的 dotnet watch 运行 破坏了 Nuget 包引用
Running dotnet watch run in docker container breaks Nuget package references
我有一个 docker-compose 文件,我在其中启动数据库和 asp.net 服务器 dotnet watch
运行 像这样:
backend:
image: mcr.microsoft.com/dotnet/sdk:6.0
depends_on:
- db
environment:
DB_HOST: db
DB_NAME: db
DB_USERNAME: ${DB_USER}
DB_PASSWORD: ${DB_PW}
ASPNETCORE_ENVIRONMENT: Development
ports:
- 7293:7293
volumes:
- ./:/app
working_dir: /app
command: 'dotnet watch run --urls "http://0.0.0.0:7293"'
如您所见,我将整个项目目录挂载到容器中。
现在这个 运行 没问题并重新加载更改。
但是一旦容器在 Visual Studio 中启动,所有对 Nuget 包的引用都会标记为红色并且无法再解析。
有一个 .dockerignore
文件,但我认为这里的任何内容都不相关。但无论如何,这里是:
.dockerignore
:
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
我知道这与项目恢复有关,但我尝试过没有任何帮助。 --no-restore 使它根本就不是 运行,只是找不到对其中一个包的引用。
有什么办法可以避免这种情况吗?
好的,我明白了。安装显然不关心 .dockerignore
。我必须排除挂载中的 obj
目录。所以我就这样挂载一个空目录。
backend:
...
volumes:
- ./:/app
- /app/obj # <- directory won't be mounted
working_dir: /app
command: 'dotnet watch run --urls "http://0.0.0.0:7293"'
我有一个 docker-compose 文件,我在其中启动数据库和 asp.net 服务器 dotnet watch
运行 像这样:
backend:
image: mcr.microsoft.com/dotnet/sdk:6.0
depends_on:
- db
environment:
DB_HOST: db
DB_NAME: db
DB_USERNAME: ${DB_USER}
DB_PASSWORD: ${DB_PW}
ASPNETCORE_ENVIRONMENT: Development
ports:
- 7293:7293
volumes:
- ./:/app
working_dir: /app
command: 'dotnet watch run --urls "http://0.0.0.0:7293"'
如您所见,我将整个项目目录挂载到容器中。
现在这个 运行 没问题并重新加载更改。
但是一旦容器在 Visual Studio 中启动,所有对 Nuget 包的引用都会标记为红色并且无法再解析。
有一个 .dockerignore
文件,但我认为这里的任何内容都不相关。但无论如何,这里是:
.dockerignore
:
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
我知道这与项目恢复有关,但我尝试过没有任何帮助。 --no-restore 使它根本就不是 运行,只是找不到对其中一个包的引用。
有什么办法可以避免这种情况吗?
好的,我明白了。安装显然不关心 .dockerignore
。我必须排除挂载中的 obj
目录。所以我就这样挂载一个空目录。
backend:
...
volumes:
- ./:/app
- /app/obj # <- directory won't be mounted
working_dir: /app
command: 'dotnet watch run --urls "http://0.0.0.0:7293"'