vs2015新建的项目bin文件夹里有roslyn App_global.asax.XXX.dll

在Windows Server 2008上,使用VS2015创建的项目可能会遇到关于Roslyn编译器的错误,导致App_global.asax.gnbywkrr.dll找不到。Roslyn文件夹包含C# 6.0支持的编译器,可通过NuGet包Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers管理。错误可能由Roslyn编译器问题引起,卸载相关NuGet包可以避免,但将不再支持C# 6.0语法。解决方案包括检查NuGet包和避免删除Roslyn相关文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vs2015新建的项目bin文件夹里有roslyn 导致 App_global.asax.gnbywkrr.dll’ or one of its dependencies. 系统找不到指定的文件。 在windows server 2008上出现的问题

Could not load file or assembly ‘file:///C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\0abad8d4\f375ffac\App_global.asax.gnbywkrr.dll’ or one of its dependencies. 系统找不到指定的文件。

vs2015新建的项目bin文件夹里有roslyn文件夹是什么?
解决方法 【转载自https://bbs.youkuaiyun.com/topics/391818774?list=lz】
不能删除 否则报错

roslyn文件夹里面有
csc.exe
vbc.exe
VBCSCompiler.exe
等12个文件
这就是新的roslyn编译器,支持c# 6.0语法。它放到bin里面去是为了支持asp.net应用的动态编译。它是通过nuget的包Microsoft.CodeDom.Providers.DotNetCompilerPlatform安装的,会在web.config里面配置,替换掉默认的编译器。

发布后也要这个东东才能运行的 有什么好处吗?
关键是现在一个同事的经常重新生成解决方案后就会报错,要重新复制一个进去覆盖才能正常运行
貌似把这些代码注释就可以不用那个了

它是通过nuget安

<think>好的,我现在需要处理用户关于System.NullReferenceException异常的问题。用户提到在App_Web_sdv0ksxw.dll中发生了这个异常,但未在用户代码中处理。首先,我得回忆一下这个异常的一般原因和解决方法。 首先,NullReferenceException通常发生在尝试访问未初始化的对象引用时。比如,调用一个null对象的方法或属性。根据用户提供的引用内容,比如引用[4]提到,在MVC开发中,返回空的View可能会导致这个异常,解决方法是使用ViewBag或ViewData传值。而引用[5]提到在WinForms中判断窗体是否已销毁可以避免异常。 接下来,我需要整理常见的原因:未初始化的对象、方法返回null、集合或数组元素未初始化、事件处理未检查订阅者、多线程环境中的竞态条件等。解决方案方面,应检查对象初始化,使用null条件运算符,调试查看堆栈跟踪,以及参考用户提供的具体案例。 然后,用户可能遇到的问题可能涉及到Web应用中的特定情况,比如ASP.NET或MVC中的视图返回问题,或者控件未正确初始化。需要结合用户提到的DLL文件App_Web_sdv0ksxw.dll,这可能与Web应用程序中的动态生成的程序集有关,常见于未正确处理的页面元素或数据绑定。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何调试、特定框架中的处理方式、预防措施等,确保覆盖用户可能的需求。</think>### System.NullReferenceException 异常的原因与解决方案 **System.NullReferenceException** 是开发中常见的运行时异常,表示尝试访问未初始化(即值为 `null`)的对象成员(如属性、方法或字段)[^1][^2][^4][^5]。以下是具体原因和解决方法: --- #### **常见原因** 1. **对象未初始化** - 示例:声明对象但未实例化直接使用。 - 代码示例: ```csharp MyClass obj; // 未初始化 obj.Method(); // 抛出异常 ``` 2. **方法返回 `null`** - 示例:调用返回 `null` 的方法后未检查结果。 ```csharp var result = GetDataFromDB(); // 可能返回null result.Process(); // 可能抛出异常 ``` 3. **集合或数组元素未初始化** - 示例:访问未初始化的集合元素。 ```csharp List<string> list = new List<string>(); string item = list[0]; // 索引越界或元素为null ``` 4. **事件未检查订阅者** - 示例:触发事件时未检查是否有订阅者。 ```csharp public event EventHandler MyEvent; MyEvent?.Invoke(this, EventArgs.Empty); // 需用null条件运算符 ``` 5. **多线程竞态条件** - 示例:对象被其他线程释放后仍被访问。 ```csharp if (form != null && !form.IsDisposed) // 需双重检查 { form.UpdateUI(); } ``` --- #### **解决方案** 1. **检查对象初始化** - 确保所有对象在使用前已实例化: ```csharp MyClass obj = new MyClass(); // 正确初始化 obj.Method(); ``` 2. **使用 `null` 条件运算符(`?.`)** - 安全访问可能为 `null` 的成员: ```csharp var result = GetDataFromDB(); result?.Process(); // 若result为null,不执行Process() ``` 3. **验证集合和数组索引** - 访问集合前检查索引和元素: ```csharp if (list != null && index < list.Count) { var item = list[index]; } ``` 4. **调试与堆栈跟踪定位** - 异常信息会指出抛出异常的代码行,例如: > `在 App_Web_sdv0ksxw.dll 中发生...` 需检查对应代码行是否涉及未初始化的对象[^1]。 5. **Web开发特定场景** - **MVC中返回空视图**:避免 `return View()` 传递空模型,改用 `ViewBag` 或 `ViewData`。 ```csharp ViewData["Data"] = FetchData(); return View(); ``` 6. **窗体或控件生命周期管理** - 在WinForms中,调用窗体方法前检查是否已释放: ```csharp if (form2 != null && !form2.IsDisposed) // 双重验证 { form2.UpdateChart(); } ``` --- #### **预防建议** - 启用静态代码分析工具(如Roslyn分析器)检测潜在空引用。 - 使用C# 8.0+的可空引用类型(Nullable Reference Types)特性: ```csharp #nullable enable string? nullableString = null; // 明确标记可能为null ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值