簡體   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