为什么会找不到Microsoft.CSharp.dll?

solar 2016-11-16 12:17:33
用vs2015在win10开发的asp.net core程序,考到目标机器win7上执行报错,目标机装了.net framework 4.6.2,没装过开发环境。一开始以为是没装asp.net core sdk,然后安装上了还是一样报错。怎么回事啊?

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0]
An unhandled exception has occurred: Can not find reference assembly '.NETFramework/v4.6.2/Microsoft.CSharp.dll' file f
or package Microsoft.CSharp
System.InvalidOperationException: Can not find reference assembly '.NETFramework/v4.6.2/Microsoft.CSharp.dll' file for packag
e Microsoft.CSharp
at Microsoft.Extensions.DependencyModel.Resolution.ReferenceAssemblyPathResolver.TryResolveAssemblyPaths(CompilationLibrar
y library, List`1 assemblies)
at Microsoft.Extensions.DependencyModel.Resolution.CompositeCompilationAssemblyResolver.TryResolveAssemblyPaths(Compilatio
nLibrary library, List`1 assemblies)
at Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()
at System.Linq.Enumerable.<SelectManyIterator>d__16`2.MoveNext()
...全文
1096 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
solar 2016-11-18
  • 打赏
  • 举报
回复
也想到过这个办法,但感觉应该有更好方法
solar 2016-11-17
  • 打赏
  • 举报
回复
引用 5 楼 yi_iy 的回复:
是不是目标机按没安装.net framework 4.6.2 目标机搜索下Microsoft.CSharp.dll有没有在v4.6里
装了,在控制面板“添加/删除程序”里可以看到。记得只是装了.net frame, 而开机机上还装了一个相关开发包(不是asp.net sdk)才能开发,名字不记得了
dalmeeme 2016-11-17
  • 打赏
  • 举报
回复
如果你不能确定,那么一个简单的方法是:在你的项目里新建一个文件夹,把Microsoft.CSharp.dll拷贝一份进去,然后在你的项目里引用这个新建文件夹里的dll,然后重新编译生成一下就可以了。 发布程序时这个dll和exe在一起发布,这样肯定不会错。
solar 2016-11-17
  • 打赏
  • 举报
回复
把缺的dll拷贝过去都不管用
solar 2016-11-17
  • 打赏
  • 举报
回复
引用 9 楼 dalmeeme 的回复:
[quote=引用 8 楼 solar 的回复:] [quote=引用 7 楼 dalmeeme 的回复:] 目标机上在这个目录下:C:\Windows\Microsoft.NET\assembly
没有。这个目录下只有3个子目录: GAC_32, GAC_64, GAC_MSIL [/quote] 我说的就是这三个子目录下啊,自己找一下。[/quote] 如果那里面有所缺的mscsharp.dll的话,那程序为什么不能启动?而且我试过把缺少的文件拷过去都管用
  • 打赏
  • 举报
回复
是不是目标机按没安装.net framework 4.6.2 目标机搜索下Microsoft.CSharp.dll有没有在v4.6里
dalmeeme 2016-11-17
  • 打赏
  • 举报
回复
引用 8 楼 solar 的回复:
[quote=引用 7 楼 dalmeeme 的回复:] 目标机上在这个目录下:C:\Windows\Microsoft.NET\assembly
没有。这个目录下只有3个子目录: GAC_32, GAC_64, GAC_MSIL [/quote] 我说的就是这三个子目录下啊,自己找一下。
solar 2016-11-17
  • 打赏
  • 举报
回复
引用 7 楼 dalmeeme 的回复:
目标机上在这个目录下:C:\Windows\Microsoft.NET\assembly
没有。这个目录下只有3个子目录: GAC_32, GAC_64, GAC_MSIL
dalmeeme 2016-11-17
  • 打赏
  • 举报
回复
目标机上在这个目录下:C:\Windows\Microsoft.NET\assembly
solar 2016-11-16
  • 打赏
  • 举报
回复
any idea?
solar 2016-11-16
  • 打赏
  • 举报
回复
另外我是编译成独立程序运行的,不是在iis容器里运行
solar 2016-11-16
  • 打赏
  • 举报
回复
重启过了,因为装了很久了。应该也不是32/64位数问题,因为目标机器除了报找不到那个csharp的dll,程序还是可以继续运行,只是缺失部分功能。 发现dll文件在开发机的这个文件夹: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2 而目标机器上根本没有这个文件夹。难道非得安装vs 2015开发环境不成?
  • 打赏
  • 举报
回复
1.目标机安装了 .net framework 以后是不是要 重启下? (4.0的,4.6可能要换一下路径)1.打开运行输入 cmd 2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 3.输入 aspnet_regiis.exe -i 2.编译问题,目标机是32位系统? 右键 属性 目标平台 x86

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧