繁体   English   中英

码头工人+ dotnet手表

[英]docker + dotnet watch

我使用Visual Studio Code。

我创建一个新的projet dotnet和新的webapi。 我在.csproj中引用了dotnet-watch: <ItemGroup> <DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.Extensions.Caching.SqlConfig.Tools" Version="2.0.0" /> </ItemGroup>

然后,我构建我的DockerFile。

我注意到奇怪的行为。 泊坞窗映像检测到更改并重建解决方案。 二进制文件已经在bin和obj目录中进行了更新,但是当我调用api时,就好像从未进行任何更改一样。

FROM microsoft/aspnetcore-build:2.0

COPY . /app
WORKDIR /app

ENV ASPNETCORE_URLS=http://*:5000
EXPOSE 5000

ENV DOTNET_USE_POLLING_FILE_WATCHER=1
ENV ASPNETCORE_ENVIRONMENT=Development

Docker命令:docker run -i -p 5000:5000 -v $ {pwd):/ app -t docker-todoapi

终于在容器终端中:docker restore和docker watch run

这篇博客文章描述了当前的问题,以及如何解决这些问题:

http://www.natemcmaster.com/blog/2017/11/13/dotnet-watch-and-docker/

要总结更改,您需要:

使用Microsoft.DotNet.Watcher.Tools的 2.1.0-preview1-27567版本。

要获得此预览版本,您需要在您的项目目录中添加一个NuGet.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="aspnetcore-nightly" value="https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" />
    <add key="NuGet" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

Docker中使用的binobj目录必须与Visual Studio Code使用的目录分开,否则您将遇到当前遇到的问题。

为此,必须将binobj目录放置在项目目录之外的一个相当奇怪的位置,这可以通过在项目目录中添加一个名为Directory.Build.props的文件来实现:

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/../obj/</BaseIntermediateOutputPath>
    <BaseOutputPath>$(MSBuildProjectDirectory)/../bin/</BaseOutputPath>
  </PropertyGroup>
</Project>

您还必须从项目目录中删除旧的binobj目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM