在相同版本的框架上缺少命名空间

时间:2017-07-25 17:49:37

标签: .net docker .net-core

我有两个基于.net核心的相同应用程序。

首先是在docker容器上,我有1.0.4版本的.net核心。

其次是在我的虚拟机Ubuntu 16.0.4上,我也有1.0.4版本的.net核心。

问题是当我想在基于docker容器的应用程序上使用Claims时,找不到Claims命名空间,但是在Ubuntu vm上,一切正常。

为什么? 两个应用程序都使用相同的.net核心框架,为什么我在docker容器上找不到Claims命名空间?

这可能听起来很奇怪但是,我有3个解决方案,在第一个解决方案中,声明命名空间可用,但其余部分没有

有csproj文件。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="6.1.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Evento.Infrastructure\Evento.Infrastructure.csproj" />
  </ItemGroup>
</Project>

第二

<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <ProjectReference Include="..\Evento.Core\Evento.Core.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="6.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
    <PackageReference Include="NLog.Extensions.Logging " Version="1.0.0-*" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="4.4.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
  </ItemGroup>
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>

</Project>

第三

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>
</Project>

1 个答案:

答案 0 :(得分:0)

我没有在docker容器上使用.net。但我可以给你一个检查指针。运行虚拟机和docker容器时,很多事情可能会有所不同。

您的VM可能有一个bash_profile,其中包含一些可能在docker上丢失的PATH设置。此外,您的docker容器将仅在您的VM中运行主进程,而其他服务可能正在运行。这可能会也可能不会对您的代码产生影响。