dotnet core:找不到程序集文件Microsoft.CSharp.dll。

14

我有一个项目已经有一段时间没有运行,它是使用dotnet core 1.1.2依赖构建的。

与此同时,我更新了Visual Studio,可能还安装了一些2.0的dotnet core组件,但我的应用程序无法再运行。

InvalidOperationException: Can not find assembly file Microsoft.CSharp.dll at 'C:\dev\EarthML\EarthML.Mapify\src\EarthML.Mapify.Portal\bin\Debug\net462\win10-x64\refs,C:\dev\EarthML\EarthML.Mapify\src\EarthML.Mapify.Portal\bin\Debug\net462\win10-x64\'
Microsoft.Extensions.DependencyModel.Resolution.AppBaseCompilationAssemblyResolver.TryResolveAssemblyPaths(CompilationLibrary library, List<string> assemblies)
我应该怎样开始找出为什么它不工作?

根据你的异常,它没有提及 net462\win10-x64。我非常怀疑你的 .csproj 文件需要审核。如果不介意分享一下吗? - Svek
我将应用程序升级到了dotnet core 2.0和razor pages,并解决了这个问题。 - Poul K. Sørensen
看起来你的程序集路径缺少了全局程序集缓存。 - aethercowboy
7个回答

13

这似乎是当前 Visual Studio(15.3)版本的一个错误。根本问题在于当视图尝试构建时,它们没有引用全局程序集缓存(GAC),因此没有任何依赖项。

虽然只是一个解决方法,但当遇到此问题时,最好的选择是将缺失的 DLL 文件复制过去。我将它们设置为我的项目组件,并添加了复制操作。一旦修复(目前是已排除故障:链接),就可以将它们删除。

编辑

或者,根据链接,将其作为项目的引用可能会代替添加所有依赖项:

<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.0.0" />

这个修复对我没用 - 你之前已经在使用 .NET Core 2.0 吗? - sir_thursday
不行,但是升级到2.0版本可以解决你的问题。 - aethercowboy
抱歉,您知道这次升级实际上修复了什么问题吗? - sir_thursday
不好意思,根据开发者社区链接中的信息,该问题目前正在“调查中”。 - aethercowboy
4
Microsoft.Extensions.DependencyModel 这个包对我解决了这个问题。 - Morten Christiansen

1
我曾经有一个<DependsOnNETStandard>true</DependsOnNETStandard>,但我必须将其更改为<DependsOnNETStandard>netstandard1.6</DependsOnNETStandard>
<PropertyGroup>
    <TargetFramework>net462</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
    <IsServiceFabricServiceProject>True</IsServiceFabricServiceProject>
    <AssemblyName>MyProject</AssemblyName>
    <Platforms>AnyCPU;x64</Platforms>
    <DependsOnNETStandard>netstandard1.6</DependsOnNETStandard>
</PropertyGroup>

来源:来自 neman 的 GitHub 问题


1

您是否已经包含了 Microsoft.CSharp.dll 的引用?展开您的项目,在 References 上右键点击,选择 Add Reference,搜索 Microsoft.CSharp,勾选该项,然后点击 OK

Select Microsoft.CSharp


1
是的,还添加了NuGet Microsoft.CSharp 4.3.0。 - Poul K. Sørensen
1
但它不在输出 bin 文件夹中。 - Poul K. Sørensen

1

我将应用程序升级到了dotnet core 2.0和razor页面,并解决了这个问题。


1
我升级到2.0版本,问题仍然存在。:( 你还改了其他什么吗? - Ruchan

0
在我的C#项目中,一些.NET Standard类库支持Core控制台应用程序和Winforms .net 4.7程序。昨天我打开了我的项目,其中一个.NET标准dll出现了上述错误,留下了带有感叹号的引用,对于解决方案中依赖它的所有库也是如此!看起来非常令人担忧。
尽管如此,我继续在我的解决方案上工作。我在这里使用Visual Studio 15.8.1,问题似乎是虚假的警告。在处理项目时感叹号标记仍然存在,但不会发生任何事情或中断重建。程序集按预期运行。
几分钟前,我通过删除Microsoft.CSharp引用,然后重新构建所有内容来解决了这个问题。它只存在于一个库中,因此重建解决方案中的所有感叹号都得到了解决。引用已经消失,天空清晰明朗。

0

-9

清理解决方案并重新构建它。 如果不行,请创建新项目,然后复制 DLL 并粘贴。 祝好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接