2017-10-16 91 views
0

我使用Visual Studio代码。码头+ dotnet手表

我创建了一个新的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。

我注意到奇怪的行为。 Docker镜像检测到更改并重建解决方案。二进制文件已在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 

多克尔命令:搬运工运行-i -p 5000:5000 -v $(PWD):/应用-t搬运工-todoapi

终于在集装箱码头:码头工人恢复和搬运工观看运行

+0

你可以运行码头图像,看看你有什么标签为该图像?它可能不会将构建标记为“最新” –

回答

0

本博客文章介绍了当前的问题,又如何解决的问题:

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

总结的变化,你需要:

使用版本的Microsoft.DotNet.Watcher.Tools2.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> 

在泊坞窗使用的binobj目录必须从那些由Visual Studio代码使用的分离,或你将会遇到你目前所看到的问题。

要做到这一点的binobj目录必须被放置在一个相当奇怪的地方项目目录,这可以通过添加一个名为Directory.Build.props文件到您的项目目录来完成的以外:

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

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