运行.NET Framework的.NET Core项目“找不到参考程序集Microsoft.CSharp.dll”

问题描述 投票:0回答:1

我最近在.NET Core 2.0项目中添加了MVC,该项目在.NET Framework 4.7(<TargetFramework>net47</TargetFramework>)上运行。这是一个通过Kestrel服务器在本地托管的Web项目。在添加MVC之前,没有任何问题。

我在开发人员计算机(Visual Studio 2017)上构建它,并且在该计算机上运行它时,它可以正常工作。 (因为存在以下文件夹:C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.7,其中包含所有必需的程序集)。这些将作为程序集(自动)添加到项目中。

但是当我将bin / release复制到新的Win10计算机(安装.NET Framework 4.7并尝试在其中运行它时,它将失败,并带有以下异常:

System.InvalidOperationException:找不到引用程序集包的'.NETFramework / v4.7 / Microsoft.CSharp.dll'文件Microsoft.CSharp.Reference

如果我将这个dll手动复制到垃圾箱中,则由于下一个dll继续出现异常。我复制了:Microsoft.CSharp,mscorlib,System,System.ComponentModel.Composition,System.ComponentModel.DataAnnotations,System.Core,System.Data,System.Drawing,System.IO.Compression.FileSystem等,因此您看到了没有结束。

我也尝试过这些建议:

  • <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.0.0" />添加到.csproj(https://github.com/dotnet/sdk/issues/1488
  • <DependsOnNETStandard>netstandard2.0</DependsOnNETStandard>添加到.csproj
  • <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>添加到.csproj(Asp.net Core 2.0 with .net framework 4.6.1 - Cannot find reference assembly '.NETFramework/v4.6.1/Microsoft.CSharp.dll
  • 使用.NET Framework 4.7创建新的.NET Core 2.0项目并添加MVC。我测试了它是否可以在另一台机器上工作,并且可以。没有缺少的程序集。 ->然后,我将此解决方案与我的解决方案进行了比较,比较了NuGet包和Startup.cs,但找不到任何不同的内容。

我的项目中肯定有什么问题,但是我现在真的很头绪,如果有人可以给我一些建议,我将非常感激。

.net asp.net-mvc asp.net-core .net-core asp.net-core-2.0
1个回答
0
投票

生产和开发的红est Web服务器均正常运行。

    已安装清洁项目.net core 2.0和.net 4.7框架并正确引用。
  1. 这可能表明开发项目具有直接链接到开发机器路径的内部引用路径(有时,如果手动添加引用或使用其他包管理器,则在项目开发过程中会发生这种情况),而不是在部署包中进行动态链接。
  • 如果我试图发现问题,下一步将是通过网络而不是开发机器将Visual Studio发布输出的目标更改为生产服务器路径,或者如果没有网络连接,则发布自包含的部署程序包(基于文件夹的文件),您可以将其转移到生产机器并部署在Web服务器上。
  • [这里没有更多细节,这可能是我目前所能提供的。

    仅是在当前版本和引用不断变化的环境中的注释,我遇到了许多相同的问题,并且找到了一个可能对将来的项目有所帮助的简单解决方案。当我添加需要各种映射以进行版本控制和引用架构的库或框架时,我创建了充当框架自己的包装程序和版本控制的库项目,将其部署到程序包管理器,然后通过以下方式将该包装程序项目链接到主项目:包裹经理。这样做的好处是,您可以管理版本控制的维护(路径和绑定)并自己引用,而不是直接绑定到主项目(所有引用都具有自己的标准化绑定)]

    希望这有助于找到解决方案。

  • © www.soinside.com 2019 - 2024. All rights reserved.