【nmake编译C#源码】教程文章相关的互联网学习教程文章

c#-从.Net应用程序编译.cs

是否有托管API来编译C#应用程序(到内存或磁盘)?我认为存在一个是因为SharePoint会在内存中编译ASP.NET页.我们想在运行时使用它来生成Linq DataContext,并针对各种项目进行编译.解决方法:看一下Microsoft.CSharp.CSharpCodeProvider类.该页面包含如何使用该类来编译C#源代码的示例代码. 注意:此类不能用于部分信任中.您需要以完全信任的身份运行才能运行C#编译器.

c#-JPG,DOC,PDF等文件也被编译成程序集吗?

Q1: > aspnet_compiler.exe是否可以将网站目录中包含的所有文件(包括JPG,DOC和PDF类型)编译为汇编文件?>如果将图像添加到Web项目中的文件列表中(从而将它们添加到项目文件中),VS是否还会将这些图像编译为程序集? Q2: 当aspnet_compiler.exe将应用程序编译为程序集时,它还将编译资源和Web引用. >我不确定我是否理解“正在编译的网络参考”的含义.本文讨论的是哪种Web参考?>文本还提到资源也被编译.哪些文件被视为资源?只是非A...

c#-VB中的通用方法重载编译错误【代码】

VB.NET编译器无法编译一个类(在单独的C#程序集中),该类包含带有通用参数的方法的两个重载,因此出现问题. C#中的等效代码针对相同的程序集进行编译,不会出错. 这是两个方法签名:protected void SetValue<T>(T newValue, ref T oldValue) protected void SetValue<T>(T? newValue, ref T? oldValue) where T : struct这是演示该问题的三个程序集的代码.第一个是具有实现通用方法的Base类的C#程序集.第二个是从Base派生的C#类,可以正...

C#使用编译器常量排除完整的表格/用户控件

我想在我的项目中排除/包含完整的表格.但是,当我添加所需的#if CONST和#endif时,编译器会抱怨可能使用错误名称的资源.warning MSB3042: A namespace or class definition was found within a conditional compilation directive in the file “Form1.cs”. This may lead to an incorrect choice for the manifest resource name for resource “Form1.resx”.这是什么意思? 我该如何解决?解决方法:>说明:普通表单(从模板创建)由...

c#-在应用程序中创建/编译.net数据类

我们是否可以使用某种模式,Xml结构,体系结构技术来创建简单的数据持有人类代码,然后就可以在运行时反序列化该代码了? 我们正处于.Net项目的早期设计阶段,我们的目标之一是使最终的系统可以通过配置进行扩展,而无需开发人员.我们需要支持新的数据源,通常以Xml消息的形式提供.当前,我们将消息转换/反序列化为简单的类,然后使用可以根据需要操纵这些类的现有语言. 当您有开发人员将Xml映射到简单类,创建该类然后编写反序列化时,这种方...

如何使用C#4.0编译器将MonoDevelop定位到.NET 2.0框架?【代码】

使用Visual Studio可以轻松实现这一点,尽管我需要使用MonoDevelop来实现这一点,因为Visual Studio编译的DLL在Unity中效果不佳. MonoDevelop DLL可以正常工作,但我想在针对.NET 2.0运行时时使用默认函数参数(C#4.0功能). MonoDevelop有可能吗?我该如何设置? 添加:为Visual Studio和MonoDevelop构建命令行 我对参数进行了排序以便于比较: MonoDevelop:目标= Mono / .NET 4C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.ex...

c#-在构建服务器上编译async..await时无效的令牌“ void”【代码】

我目前正在编写一个使用async..await-Pattern执行异步任务的类.在其中,我有一个像这样的方法:public async void DoSomething() {...await SomeObject.DoYourThingAsync();... }供参考:该项目设置为使用.NET-Framework 4.5,而我使用的是VS2012.在我的机器上,它可以编译并正常工作,但是当我将其检入TFS时,该版本会在函数声明中生成错误.消息是:类,结构或接口成员声明中的无效令牌“ void”解决方法:看起来您的构建服务器不了解C#5...

是否有可能欺骗C#编译器以将Nullable结构蚂蚁而不是其值装箱?【代码】

好吧,这个问题似乎很奇怪.确实是.但是我坚信,此类黑客有助于理解语言和.net平台. C#编译器对待可空类型的方式暗示了这个问题. 可空T是一个结构.但是编译器不装该结构,而是装它的值或只是空引用. 在装箱的Nullable情况下,这也很有趣.Nullable<int> myInt = boxedStruct as Nullable<int>;在这里,我认为boxedStruct不是盒装int,而是整个结构. 好吧,可能是因为在CLR级别上对Nullable的处理方式有所不同,因为我无法理解下面程序的输出....

通过C#解决方案中的规则进行崩溃编译的扩展

我正在寻找一些VS2012扩展或以下问题的另一种解决方案: >我想检查我的C#自定义属性是否设置为Public类.>如果不是,则在编译项目时引发错误. 我希望看到此测试在工作室中进行,并且已经与编译相关联.是的,我知道可以做到,例如使用Ndepend进行测试或进行运行时检查.解决方法:开箱即用的编译器无法执行此操作.您可以为其编写fxcop规则,也可以使用NDepend之类的工具.或者可能是罗斯林发布时.但这根本不是您可以做的“香草”. 坦白说,我想...

C#编译相关知识

C#代码编译成MSIL代码。当用户编译一个.NET程序时,编译器将源代码翻译成一组可以有效地转换为本机代码且独立于CPU的指令。当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码。由于公共语言运行库支持多种实时编译器,因此同一段msil代码可以被不同的编译器实时编译并运行在不同的结构上。从理论上来说,MSIL将消除多年以来业界中不同语言之间的纷争。在.NET的世界中可能出现下面的情况一部分代码可以用EFFIL实现,另...

没有表达式的C#字符串插值如何编译?【代码】

编译器如何处理没有表达式的内插字符串?string output = $"Hello World";仍然会尝试格式化字符串吗?编译后的代码与带有表达式的代码有何不同?解决方法:对于此C#代码:string output = $"Hello World";int integer = 5;string output2 = $"Hello World {integer}";Console.WriteLine(output);Console.WriteLine(output2);我在编译然后通过ILSpy反编译时得到了这个:string value = "Hello World"; int num = 5; string value2 = ...

c# – 忽略ObsoleteAttribute编译器错误【代码】

我有一个标有以下属性的枚举值.每当使用该值时,第二个参数指示编译器发生错误.我希望这个行为适用于实现我的库的任何人,但我需要在我的库中使用这个枚举值.如何告诉编译器忽略我库中几次使用的过时错误.public enum Choices {One,Two,[ObsoleteAttribute("don't use me", true)] Three,Four }解决方案(谢谢大家)public class EnumHack {static EnumHack(){// Safety checkif (Choices!= (Choices)Enum.Parse(typeof(Choices), "Thr...

c#-使用定义的自定义符号(例如:“ DEBUG”)执行Roslyn条件编译【代码】

我正在使用Roslyn编写一个类似于以下代码的项目:var workspace = MSBuildWorkspace.Create(); var project = await workspace.OpenProjectAsync("SomeProject.csproj"); var compilation = await project.GetCompilationAsync();我需要设置一个编译符号(例如DEBUG或TRACE,但是在我的情况下是完全自定义的).我该如何使用API??? 我看到该项目具有CompilationOptions属性,但那里没有任何相关内容. 编辑感谢@JoshVarty,他指出在编译之...

c#-编译期间未发出编译器警告CS4014【代码】

当被调用方法在引用程序集中时,编译器警告CS4014(在不等待结果的情况下调用异步方法)不会作为警告发出. 当被调用的方法在同一程序集中时,将正确发出警告. 当两个项目包含在同一解决方案中时,在Visual Studio中会发出编译器警告. 造成这种差异的原因似乎是编译器仅具有编译的引用程序集,而Visual Studio具有两个程序集的源代码. 问题是:为什么这两种行为不同?并且有什么办法可以在编译期间发出CS4014警告? 要复制此行为,请设置两...

是否可以为未分配的局部变量保证CS0165 C#编译器错误?【代码】

在这样的代码中:int val;if (something())val = 10;val++; // Error CS0165 Use of unassigned local variable当使用局部变量时,如果没有确定地初始化它,我会收到CS0165错误消息. 在C语言世界中,这种情况是未定义的行为类情况,这意味着任何情况都是允许的.因此,也许有一个编译器错误,也许有一个编译器警告,也许有一个运行时错误,也许代码只使用了当时内存中的任何内容,并祝您好运. 是否可以为C#中的此类代码保证CS0165? 是否存在...