【问题标题】:.net core web api with .net standard library EF.net 核心 web api 和 .net 标准库 EF
【发布时间】:2018-06-02 19:27:32
【问题描述】:

我在 .net 核心 web api 项目中遇到了最奇怪的问题,我添加了一个 .net 标准库,其中首先包含我的模型和 EF 代码。当我部署到 IIS Express 时,这一切都有效,但是当我尝试将其发布到 IIS 时,构建失败。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\logs\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.3" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="4.5.4" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet">
      <Version>1.0.0-*</Version>
    </DotNetCliToolReference>
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\mobileapp\forms\xxxCallManager\xxxDalCoreStandard\xxxDalCoreStandardxxxlDalCoreStandard.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="System.Text.Encoding.CodePages">
      <HintPath>..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\System.Text.Encoding.CodePages.dll</HintPath>
    </Reference>
  </ItemGroup>


</Project>

正如你从他们看到的,他们没有提到 system.refelection,所以我只能假设它是我的标准项目中的一个在下面搞砸的 nuget 是我的 standard.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.1" />

  </ItemGroup>
    <ItemGroup>
   <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.2" />
</ItemGroup>
</Project>

我得到的错误如下现在我尝试添加system.reflection的nuget但仍然没有乐趣

编辑 1 下面的建议有点帮助,但现在我遇到了这个错误。

严重性代码描述项目文件行抑制状态 错误命令 ""dotnet" exec --runtimeconfig "C:\Work\xxxApp\xxxlApis\bin\Release\netcoreapp2.0\FuelApis.runtimeconfig.json" --depsfile "C:\Work\FxxxApp\xxxlApis\bin\Release\netcoreapp2.0\xxxApis.deps.json" "C:\程序 文件\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.0.3\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.dll" @"obj\Release\netcoreapp2.0\microsoft.aspnetcore.mvc.razor.viewcompilation.rsp"" 以代码 1 退出。xxxlApis 0

【问题讨论】:

  • 您可以尝试使用 dotnet cli 发布。 dotnet publish -c Release -r win7_x64 --self-contained

标签: c# asp.net-core


【解决方案1】:

您在第一个项目中使用了错误版本的 EF 工具,它看起来像 1.0 预览版,应该是:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.*" />

我也会删除这部分:

<ItemGroup>
<Reference Include="System.Text.Encoding.CodePages">
  <HintPath>..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>

我认为您不需要,尤其是提示路径部分。我会尝试完全删除它

【讨论】:

  • 有点帮助,但我正面临一个新的 .net 核心错误希望这比这个 tbh 更稳定
  • 我必须在 iis express 中添加这个工作正常,这是奇怪的部分,请参阅上面的编辑 2
猜你喜欢
  • 2016-12-27
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多