在System.Diagnostics中未找到进程类?(System.dll??)
我正在使用.NET Framework 3.5,我已经引用了所有组件,我已经进行了双检查,但是仍然有这种刺激的错误 CS0234: The type or namespace name 'Process' does not exist in the namespace 'System.Diagnostics' (are you missing an assembly reference?) (CS0234) (Proj1) 根据 解决方案 确保您引用正确的system.dll.该版本应大致为v2.0.50727 其他解决方案 我也面临着同样的问题.我正在使用编码执行需要进程类的代码.因此,对我来说,解决方案是refrence system.dll选项.如果有人需要,这是解决方案. CSharpCodeProvider cs = new CSharpCodeProvider(); cs.CompilerOptions = "/op
14 2024-04-26
编程技术问答社区
如何使用IMetaDataDispenser.OpenScope获取嵌入式汇编的元数据?
我有一个.NET解决方案,该解决方案由几个项目组成.可以说这些项目之一是逻辑上的一个主要项目,而其他所有项目都是次要的.我们的团队已决定下一步建立该项目.主要项目将产生一个组件(我将其称为主要项目).所有其他项目的组件都是次要的,它们将被嵌入为主要资源. 主项目中的SourceCodeForExceptionHelper类负责在每个遇到的异常上使用PDB文件获得原始源代码.为此,我使用描述的方法在这里.它在我单独的概念项目证明中正常工作.但是,当我试图将该类移动到真正的解决方案中时,我遇到了一个问题:IMetaDataDispenser.OpenScope方法不需要null引用汇编文件的路径.当然,我没有任何辅助程序集的参考(因为它们的文件嵌入了主要组件).因此,我无法创建类型ISymbolReader的对象并读取源代码.我该如何解决这个问题?顺便说一句,问题甚至更糟,因为我们仅嵌入了没有PDB文件的次级程序集(尽管有必要,我们会这样做). 事先感谢您的任何帮助和建议!
8 2024-04-25
编程技术问答社区
如何为编译器编写缓冲区?
我想第一次用C#编写编译器,我以某种方式丢失了如何处理它的缓冲!我的参考是编译器,原理,技术和工具,,它说: 由于处理字符花费的时间和 在此期间必须处理的大量字符 大型源程序的汇编,专门的缓冲 已经开发了减少开销量的技术 需要处理单个输入字符. 涉及两个交替重新加载的两个缓冲区,每个缓冲区均为 n尺寸相同,n通常是磁盘块的大小,例如4096 字节.使用一个系统读取命令,我们可以将n个字符读取到一个 缓冲区,而不是每个字符使用一个系统调用.如果少于 n个字符保留在输入文件中,然后是一个特殊字符, 由EOF代表,标记源文件的末尾,是不同的 来自源程序的任何可能字符. 在本书中还说,我们将 eof 放在每个缓冲区的结尾,以意识到我们达到了缓冲区的结尾.它有两个指针 forward lexembegine 指向缓冲区中的词汇! 我的问题是我不知道如何创建此缓冲区?我应该在sourceBuffer类中使用尺寸n制作数组或缓冲区,然后如何从streamReader中读取文件并将源文件的n
6 2024-04-25
编程技术问答社区
通过Unity3D和MonoDevelop编译C#。
我使用的是Unity3D v4.2.2f1,它的单版本的版本与-v2.8.2. 捆绑在一起 我看到在某些情况下,C#代码将在Unity3D中进行编译,但不会在单声道中进行编译.例如,unity3d接受了方法参数的默认值,但在Monodevelopice中导致"不允许使用默认参数设置(CS0241)". 我在网上发现的一般建议是不要试图从Monodevelop中编译.很好 - 但是我很想了解这种不匹配是如何出现的.我以为使用单声道都使用unity3d和单体开发C#C#? Unity3D带有两个版本的单声道,一个是本身,一个用于单声道?如果是这样,为什么? 示例的第一行方法的第一行,该方法以统一而不是在单体开发中编译(在单体开发中不编译但从Unity3D编译的位是" = false"分配给setNative): public static void SetUnityVersion(string path, bool setNative=false) { ...i
4 2024-04-25
编程技术问答社区
自动属性的INotifyPropertyChanged-Feature功能
我有许多模型类,它们实现了InotifyPropertychanged-Interface,以便在值更改时更新UI. 可悲的是,必须完全编写属性以支持此功能.我已经通过使用" setPropertyvalue" method()在基本中降低了代码. private string _title; public string Title { get { return title; } set { SetPropertyValue("Title", ref _title, value ); } } 但是,在一个文件中写了20个属性,与自动实施的属性不同,在短时间内理解文件的内容并不是那么简单. 我想要的是这样写我的财产: [NotifyChanged] public string Title { get; set; } 我已经检查了 postSharp ,但在免费版本中只有10个类(其中包括一个(它是一个)爱好项目,所以我不想付太多钱).
12 2024-04-24
编程技术问答社区
为什么在C#中管理模块比非管理模块更快?
我在书作者中读书(CLR通过C#)谈论IL和托管模块,该模块在本机CPU代码中汇编的模块,然后在书籍作者中执行,并在书中说,托管模块比未管理的模块更快.我的问题是我的问题.为什么托管模块比未管理的模块更快,但在托管模块中首先编译为IL,然后在本机CPU中进行编译. 解决方案 (我下面写的不是我的,它是从书中复制的: CLR via C#, Page No 14 ) 有很多原因导致托管代码胜过非托管代码 当JIT编译器将IL代码编译为本机机器代码时 运行时间,编译器比执行环境更了解 一个非托管的编译器会知道. 托管代码胜过非托管代码的一些方法 JIT编译器可以确定该应用程序是否在 Intel Pentium 4 CPU并生成具有优势的本地代码 CPU提供的任何特殊说明.通常,不受管理 为CPU的最低通用分母编译了应用程序 并避免使用会提供申请的特殊说明 性能提升. JIT编译器可以确定何时在运行的机器上始终失败.考虑示例 if (num_of_c
2 2024-04-24
编程技术问答社区
如果在循环ID字符串名称中语句,而不是基于ANTL4的解释器中的值
如果有人会有所帮助,那么美好的一天真的可以感激.我正在基于Antlr4的解释器上工作,现在我在实施访客课程后面临挑战.该实现正在完美工作,即if语句,除非内部循环,否则它将返回ID名称而不是值. 以下是实现 using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EasyBite { public class Interpreter : EasyBiteBaseVisitor { private Dictionary variables = new Dictionary(); // Helper function to convert an object to a bool
18 2024-04-24
编程技术问答社区
命令行编译Win Forms C#应用程序
我正在尝试创建一个从命令行编译Windows c#2.0项目的脚本(我知道. 'd感谢它). 该项目是一个标准的Windows表单项目,具有一些资源和参考,其中几个外部组件.这是文件列表: Program.cs // no need to expand on this on :) frmMain.cs // this is a typical C# windows forms file frmMain.designer.cs // .. and the designer code frmMain.resx // .. and the resource file MyClasses.cs // this contains a couple classes Properties\Asse
6 2024-04-23
编程技术问答社区
在预编译的ASP.NET网站上,JIT中的高、波动'%时间'。
使用150 *.dll ASP.NET网站预编译(可更新),jit ''高(> 60%)和波动在应用程序变暖(所有功能访问)之后,没有 App重新启动或文件更改可能会生成新的汇编? 一个人会期望为 组件生成的机器代码在该应用程序域的持续时间内被重复使用.缓存的机器代码量是否有限?在哪些方案下,需要在同一应用程序域中重新调整同一组件?还是必须生成新的组件的情况?记忆压力等因素是否会影响此绩效计数器? 参考: 解决方案 它可能是任何可以发出的东西.未正确缓存的LINQ表达式编译或正则表达式. 其他解决方案 如果您设置了缓存参数,则可能会无意间禁用预编译的服务器端缓存.看这篇文章:
4 2024-04-23
编程技术问答社区
Nullable<int?>是不可能的,为什么不可能?
请问,如果这是一个愚蠢的问题,我正在尝试更好地了解.net中的可无效类型. 从我从Microsoft源代码(使用Resharper)中注意到的内容,我知道可无效的是struct,t需要是struct public struct Nullable where T : struct 现在,我尝试做类似的事情 public struct CustomNullable where T : struct { } public class CustomNullableClass where T : struct { } 编译时,我会遇到错误: Nullable a = null; Nullable> a1 = null; 对于上述代码,我遇到了一个错误"只有不可删除的值类型可能是系统的基础. 和 CustomNullable a2 = null; CustomNull
4 2024-04-23
编程技术问答社区
在预编译的ASP.NET网站上,JIT中的高、波动'%时间'。
使用150 *.dll ASP.NET网站预编译(可更新),jit ''高(> 60%)和波动在应用程序变暖(所有功能访问)之后,没有 App重新启动或文件更改可能会生成新的汇编? 一个人会期望为 组件生成的机器代码在该应用程序域的持续时间内被重复使用.缓存的机器代码量是否有限?在哪些方案下,需要在同一应用程序域中重新调整同一组件?还是必须生成新的组件的情况?记忆压力等因素是否会影响此绩效计数器? 参考: 解决方案 它可能是任何可以发出的东西.未正确缓存的LINQ表达式编译或正则表达式. 其他解决方案 如果您设置了缓存参数,则可能会无意间禁用预编译的服务器端缓存.看这篇文章:
10 2024-04-23
编程技术问答社区
C#属性访问优化
在C#(或VB .NET)中,编译器是否尝试优化属性访问?例如, public ViewClass View { get { ... Something is computed here .... } } if (View != null) View.Something = SomethingElse; 我想,如果编译器可以以某种方式检测到两个访问之间View保持恒定,则它可以避免两次计算值.是否进行了这些优化? 我知道,如果View具有一些密集的计算,则可能应将其重构为函数(GetView()).在我的特殊情况下,View涉及攀登视觉树寻找特定类型的元素. 相关:关于(Microsoft)C#编译器的工作的任何引用? 解决方案 通常不是.正如史蒂文(Steven)提到的有关多线程的许多因素需要考虑,如果您真正地计算出可能会发生变化的东西,那么您应该将其重构从属性中进行重
10 2024-04-23
编程技术问答社区
C#和元数据文件的错误
我使用MSDN上的教程创建了自己的小C#编译器,并且它无法正常工作.我遇到了一些错误,然后我修复了它们,然后得到新的,不同的错误,然后修复了它们等. . 最新错误确实使我感到困惑. --------------------------- --------------------------- Line number: 0, Error number: CS0006, 'Metadata file 'System.Linq.dll' could not be found; --------------------------- OK --------------------------- 我不知道这意味着什么. 有人可以解释一下这里发生的事情吗? 这是我的代码. 我的示例C#编译器代码: 使用系统; namespace JTM { public class CSCompiler { protected
6 2024-04-23
编程技术问答社区
在同一解决方案/项目中混合使用.NET 3.5和4/4.5程序集
我有一个解决方案,该解决方案是在.NET 4.5中编译的大多数项目(我使用异步和任务). 有几个项目需要在.NET 3.5中编译,因为它们使用仅支持.NET 3.5的SDK. 如果我的"常见"项目在4.5中编译,并且我有一个带有目标框架3.5的项目,是否可以添加对公共的参考? (例如,我的记录器界面是普通的,并且我使用di获得了). 谢谢. 输出: could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v3.5". 解决方案 编译器告诉您,这是不可能的.您可以尝试将"普通"库将其分为两个部分,一个是4.5的,另一个用于3.5框架.
6 2024-04-23
编程技术问答社区
在使用库方面,C/C++/Objective | C与C#相比如何?
这个问题基于以前的问题: C#编译需要标题文件?. 确认C#汇编利用多个通行证本质上回答了我最初的问题.另外,答案表明C#使用存储在组件中的类型和方法签名元数据在编译时检查代码语法. Q: C/C ++/Objective-C如何知道在编译时链接的运行时间加载什么代码?为了将其与我熟悉的技术联系在一起,C#/CLR如何执行此操作? 如果我错了,请纠正我,但是对于C#/clr,我的直观理解是执行时检查了某些路径,并且基本上所有代码在运行时都会加载并动态链接. 编辑:更新为c. 更新:要澄清,我真正想的是C/C ++/Objective-C汇编如何与我的源中的"外部定义"符号与该代码的实际实现,什么是汇编输出,基本上是如何由微处理器执行的汇编输出,以无缝将控件传递到库代码(就指令指针而言).我已经使用CLR虚拟机做到了这一点,但是很想知道在实际的微处理器上在C ++/Objective-C中概念上的工作方式. 解决方案 链接器在C/C ++构建中起着至关重要
6 2024-04-23
编程技术问答社区
在使用库方面,C/C++/Objective-C与C#相比如何?
这个问题基于以前的问题: C#编译需要标题文件?. 确认C#汇编利用多个通行证本质上回答了我最初的问题.另外,答案表明C#使用存储在组件中的类型和方法签名元数据在编译时检查代码语法. Q: C/C ++/Objective-C如何知道在编译时链接的运行时间加载什么代码?为了将其与我熟悉的技术联系在一起,C#/CLR如何执行此操作? 如果我错了,请纠正我,但是对于C#/clr,我的直观理解是执行时检查了某些路径,并且基本上所有代码在运行时都会加载并动态链接. 编辑:更新为c. 更新:要澄清,我真正想的是C/C ++/Objective-C汇编如何与我的源中的"外部定义"符号与该代码的实际实现,什么是汇编输出,基本上是如何由微处理器执行的汇编输出,以无缝将控件传递到库代码(就指令指针而言).我已经使用CLR虚拟机做到了这一点,但是很想知道在实际的微处理器上在C ++/Objective-C中概念上的工作方式. 解决方案 链接器在C/C ++构建中起着至关重要
6 2024-04-22
编程技术问答社区
在运行时使用.NET 3.5和C#从文件中编译IL代码
我想将一个是IL文件的文件,然后在运行时将其编译回EXE. 现在,我可以使用Process.start使用参数(ILASM.EXE)启动命令行,但我想从我将创建的C#服务中自动化此过程. 有没有办法通过反射和反射来完成此操作?emit? 当它起作用时: string rawText = File.ReadAllText(string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName")), Encoding.ASCII); rawText = rawText.Replace("[--STRIP--]", guid); File.Delete(string.Format("c:\\temp\\{0}.il", Utility.GetAppSetting("baseName"))); File.WriteAllText(string.Format("c:\\temp\\{0}.il", Util
6 2024-04-22
编程技术问答社区
为什么编译器会发现这句话有歧义?
在我的基类中,我有一个通用方法(理想情况下,这是一个属性,但是您不能拥有通用属性)和一个非代属性,均以相同的名称: protected static T CurrentUserId() { ... } protected static string CurrentUserId { get { ... } } 但是,当我使用其中的任何一个Intellisense时,都会报告它们之间的歧义.当然,base.CurrentUserId(没有parethesese)为编译器提供了足够的线索,我想调用非生成属性? 有人知道编译器为何为此努力吗?预先感谢. 解决方案 保罗关于"将仿制药引入混合物中如何完全掩盖了这个更基本的问题"的评论似乎是真的. 我相信,您的问题与仿制药有关,而与如何适当地超载一种方法有关(我对此可能是错误的,但这是我从查找方法中收集到的超载).我什至不确定是否可以用具有相同名称的方法将属性重载,
2 2024-04-22
编程技术问答社区
C#对字符串和.cs文件进行动态编译
我正在在一个网站上工作,用户可以在浏览器文本区域中实现C#代码解决方案并提交.然后,服务器将与我在服务器上提供的预定义接口一起编译该代码.将其视为一种策略设计模式;我提供了策略接口,用户实现了它.因此,我需要在运行时将字符串和预定义的 *.cs文件一起编译.这是我现在只编译字符串部分的代码: CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp"); CompilerParameters parameters = new CompilerParameters(); parameters.OutputAssembly = "CodeOutputTest.dll"; // need to name this dynamically. where to store it? parameters.GenerateExecutable = false; parameters.IncludeDebug
2 2024-04-22
编程技术问答社区