Tag: 编译

c#更改框架错误

我正在运行Visual Studio 2010.我只是将项目的框架工作从4.0更改为3.5。 我删除了它要求我删除然后尝试编译的参考Microsoft.Framework。 我现在得到错误: 错误1无法加载文件或程序集’System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’或其依赖项之一。 该系统找不到指定的文件。 第123行,第5行.C:\ Users \\ Documents \ Visual Studio 2010 \ Projects \\\ Properties \ Resources.resx 123 5 我知道它是指我的resources.resx文件中的代码: System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\pix-300×300.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\pix2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\pix4.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a […]

如何以编程方式检查托管程序集是x86,x64还是AnyCPU?

我需要以编程方式确定程序集是x86,x64还是AnyCPU? 有一个几乎相同的问题 ,但它提供的解决方案 Assembly assembly = Assembly.LoadFrom(fileName); PortableExecutableKinds peKind; ImageFileMachine imageFileMachine; assembly.ManifestModule.GetPEKind(out peKind, out imageFileMachine); 尝试从32位进程加载64位程序集时失败(反之亦然)。 是否有一种以编程方式查找程序集的编译类型的万无一失的方法? 编辑:基于@BenVoigt的建议,我创建了一个小命令行实用程序 ,用于检查DLL是否受管理以及是否为x86 / x64 / AnyCPU。 我希望有人觉得它很有用。

在C#中读取文件编译时

我正在编写一些unit testing,其中我需要一个假的xml文件。 我可以创建该文件,并要求它与unit testing一起部署,但经验表明,在我的办公室,这是一个很头疼的问题。 所以我决定该文件将由UT创建。 StreamWriter sw = new StreamWriter(testFileName); sw.Write(contents); sw.Close(); 现在的问题是内容字符串。 它实际上是一个很长的xml,如下所示: string contents = @” ~100 lines here “; 我不希望它与其余代码位于同一个文件中。 我希望从文件生成编译时的字符串。 在C ++中,我会这样做 string contents = ” #include “test.xml” “; 在C#中有可能以某种方式吗?

在方法调用上生成编译错误的属性?

我想确保一个方法(在我的情况下实际上是一个构造函数)永远不会从代码中显式调用。 它应该只在运行时通过reflection调用。 为此,我想在方法上应用一个属性,如果调用该方法会产生编译器错误,如: [NotCallable(“This method mustn’t be called from code”)] public void MyMethod() { } 我知道我可以将该方法设为私有,但在这种情况下,我无法通过部分信任上下文中的reflection来调用它… 为了完整起见,这里有更多关于我为什么需要这样做的细节: 我正在实现一个可重用的Singleton类,基于Jon Skeet的文章 。 到目前为止,这是我的代码: public static class Singleton { public static T Instance { get { return LazyInitializer._instance; } } private class LazyInitializer { // Explicit static constructor to tell C# compiler // not to mark type as […]

无法解释的MissingFieldException

在下面的代码片段中,它抛出一个MissingFieldException:Field Not Found:DepthBidLevelsexception,但仅限于下面描述的某些奇怪情况。 for(int i=DomSize-1; i>=0; i–) { fixed( ushort *p = binary.DepthBidLevels) { if( i!=DomSize-1) { builder.Append( “,”); } builder.Append( *(p + i)); } 二进制变量的类型是一个在单独的组件中定义的结构: unsafe public struct TickBinary { public const int DomLevels = 5; public const int SymbolSize = 8; public const int minTickSize = 256; public long Symbol; public byte contentMask; […]

C#编译器可以编译VB.Net代码吗?

我在ASP.NET上找到了以下内容。 我正在学习并对以下内容感到好奇。 IL体系结构的第二个主要优点是它使Framework能够与语言保持中立。 在很大程度上,语言选择不再取决于任何语言相对于另一种语言的能力,而是取决于他们对开发者或tam的偏好。 您甚至可以在单个应用程序中混合语言。 用C#编写的类可以从VB2005类派生,并且在C @方法中抛出的exception可以在VB @ 005方法中捕获。 我的问题是,ASP.NET是否使用相同的编译器来编译VB.net和C#? 更新:(另一个查询) C#编译器可以编译VB.Net代码吗?

VS 2008 Professional,智能设备.NET C#项目 – 慢速构建

我有VS 2008 Professional和Smart Device .NET C#项目。 我总共有~100个cs文件。 构建需要很长时间,我必须等待链接器约。 每次编译项目时1分钟(60秒)。 我有Core i3,4GB RAM,7200rpm磁盘。 是什么导致这种情况以及如何优化构建? 任何Visual Studio选项?

如何在运行,加载和使用中编译C#DLL

A)动态编译C#EXE和DLL是相对容易的。 B)执行EXE意味着运行新的应用程序。 加载DLL意味着可以在可以在应用程序或项目之间共享的情况下使用方法和函数。 现在,可以从MSDN或为方便起见,找到编译EXE(或使用温和修改,DLL)的最快最简单的方法: private bool CompileCSharpCode(string script) { lvErrors.Items.Clear(); try { CSharpCodeProvider provider = new CSharpCodeProvider(); // Build the parameters for source compilation. CompilerParameters cp = new CompilerParameters { GenerateInMemory = false, GenerateExecutable = false, // True = EXE, False = DLL IncludeDebugInformation = true, OutputAssembly = “eventHandler.dll”, // Compilation name }; // Add […]

Lambda Expression Compile()方法有什么作用?

我试图在C#中理解AST。 我想知道,这个例子中的Compile()方法到底是做什么的。 // Some code skipped Expression<Func> data = Expression.Lambda<Func>( Expression.Call(s, typeof(string).GetMethod(“Substring”, new Type[] { typeof(int), typeof(int) }), a, b), s, a, b ); Func fun = data.Compile(); 为了防止误解,我理解Expression.Lambda和Expression.Call构造。 我感兴趣的是Compile()方法。 它以某种方式产生真正的MSIL吗? 我能看到MSIL吗?

视觉工作室。 代码更改不会执行任何操作

我对代码所做的任何更改都没有做任何事情。 我甚至试过放线,我知道会破坏我的程序,什么都没有。 它只是继续运行旧版本。 它甚至加载了我编辑和保存的旧版本文件。 我的解决方案中有3个项目。 2是纯C#。 1是WinForms应用程序。