问题标签 [csharpcodeprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用来自另一个程序集的图标创建可执行文件
我正在寻找一种从可执行文件中获取图标的方法,并创建一个使用该图标的新可执行文件(使用CSharpCodeProvider )。
第一部分很简单,我使用:
当我想“附加”图标时,问题就来了。我尝试使用:
但是这个解决方案需要将图标写入文件中,我想避免这种情况(原因之一是保存超过 16 种颜色的图标是如此混乱......)。
是否可以直接在内存中使用 System.Drawing.Icon 对象?
编辑:为了清楚起见,我正在尝试获取可以将 C# 代码编译为可执行文件的代码。此可执行文件将有一个图标,该图标仅保存在内存中(作为 Icon 对象),而不保存在文件中(作为 .ico 文件)。
entity-framework - 使用 CSharpCodeProvider 生成 DbContext
使用下面的代码我在运行时生成 OnlineShopContext
生成的程序集是:(使用ILSpy)
}
当我想创建实例并运行查询时,例如 FirstOrDeafult 或 Where,这些方法不存在。但是由于奇怪的不匹配数据类型而无法运行 Find 方法
我该怎么做 ?如何将实例转换为类型并使用强类型来使用 Where 或 FirstOrDefault 获取数据
c# - 参考程序集的重新分配
我们有一个使用 CSharpCodeProvider 动态生成和编译代码的应用程序。编译的代码使用 Entityframework,因此我们将 Entityframework.dll 的引用传递给编译器。我们随应用程序重新分发的 Entityframework.dll 是为 .net 4.0 构建的。我们还将对 System.ComponenModel.DataAnnotations.dll 的引用传递给编译器。这是对在 GAC 中找到的 dll 的引用。
在 .net 4.0 上运行应用程序时,所有这些都可以正常工作。但是,当在 .net 4.5 上运行时,我们会遇到一个问题,因为 .net 4.0 中的 Entityframework 中的一些属性已被移动到 .net 4.5 中的 System.ComponenModel.DataAnnotations 中。所以我们得到这样的错误:
消息=错误(CS0246):找不到类型或命名空间名称“列”(您是否缺少 using 指令或程序集引用?) - 文件:c:\Generated\DataContext\0rs2sztj.2.cs:14 错误(CS0433):“System.ComponentModel.DataAnnotations.Schema.ColumnAttribute”类型存在于“c:\Users\Steven Segers\AppData\Local\Temp\Temporary ASP.NET Files\vs\69fafaea\17b01629\assembly\dl3 \95fc97d4\5bdae37d_7c05d101\EntityFramework.DLL' 和 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll' - 文件:c :\Generated\DataContext\0rs2sztj.2.cs:14
据我所知,有两种方法:
- 将 .net 4.0 的 System.ComponenModel.DataAnnotations 的参考程序集传递给编译器。这里的问题是这个参考程序集需要存在于目标机器上。为了适应这种情况,我们需要要求客户在他的服务器上安装 Windows SDK,或者将参考程序集与我们的应用程序一起分发。我发现前者是一个相当不受欢迎的要求,我不确定是否允许后者。
- 确保我们将面向运行时 .net 版本的 Entityframework.dll 传递给编译器。我不确定实现这一目标的最佳方法是什么。
c# - C#库管理控制台程序
在这段代码中,当我添加 2 本书并尝试删除第 1 本书和第 2 本书时,第 1 本书被删除而第 2 本书没有被删除。在下一种情况下,当我添加 3 本书并一一删除时,1 被删除,2 不被删除,当我删除 2 时,第 3 本书丢失。当我添加 4 本书时,2 和 4 未被删除。
我的代码(我是一名实习生,所以我是 C# 的初学者)
c# - C# 代码编译的 .exe 不运行
我正在使用 CSharpCodeProvider 自己编译带有可变参数的 .exe。编译工作正常(不返回错误)并且成功但是在运行时它开始并立即退出而没有任何错误或输出。当更改“Main”(例如改为私有或通过重命名)时,编译器输出没有有效的 Main 方法,因此示例代码不应该是原因。
有人对此有答案/解决方案吗?我对这个很迷茫,如果有任何有用的回应,我将不胜感激。先谢谢了~
*编辑:
编译后的 .exe 输出:http: //imgur.com/a/WBvz3
编译器:
要编译的代码:
c# - 使用 CSharpCodeProvider 设置变量值
我想知道是否有任何方法可以在代码中传递变量值,该代码将使用CSharpCodeProvider
.
例如 :
";
编译方法:
所以我希望能够传递Value
示例的值2
我的意思ONE TIME
是compile time
这样编译的代码将始终在其运行时显示值:2
每当我执行应用程序时。
我希望它清楚!
c# - 在其他运行时编译的程序集中引用运行时编译的程序集
我正在尝试在运行时编译由 C# .NET 4.6 在运行时编译的对象引用的代码。
我正在使用 CSharpCodeProvider 在内存中生成 CompilerResult 。生成的程序集在编译的第二个代码片段中引用。是否可以在编译第二部分之前将 AssemblyReference 添加到 CompilerParameters (否则我会收到缺少的程序集编译器错误)。
目前我看到两个选项:
- 在光盘上创建第一个程序集并使用 CompilerParameters.ReferencedAssemblies.Add (但我不喜欢不必要的光盘操作)
- 根本不生成第一块,而是将代码粘贴到第二块中(但我不喜欢多次粘贴相同的代码)
所以我的问题是:是否有一种内存方式可以在另一个运行时生成的程序集中引用运行时生成的程序集?
c# - 在运行时生成DLL程序集并改变它?
我创建了一个 dll,其中包含一个名为PersonVM
如下所示的类。及其工作...
但是这段代码在我的索引控制器中只工作了一次。例如,它不会在这里更改我的 dll 类:
没有任何错误..它只是没有改变我的 dll 类...... dll 类PersonVM
只包含我第一次设置的属性Index
c# - CSharpCodeProvider 冻结了我的 mvc 应用程序
我需要在运行时创建一些 Dll 文件。Dll 正在生成,但似乎 mvc 应用程序在执行此代码后冻结。在输出窗口中,我可以看到我所有的 Dll 都被卸载了,然后它们都被加载了。我究竟做错了什么?
我的代码:
我的输出:
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): 卸载'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0。 0__b03f5f7f11d50a3a\System.Web.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): 卸载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\系统.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): 卸载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0。 0__b77a5c561934e089\System.Core.dll'
(ETC)
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-2-131239476152101487): 加载'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0。 0__b03f5f7f11d50a3a\System.Web.dll'。跳过加载符号。模块已优化,调试器选项“只是我的代码”已启用。
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-2-131239476152101487): 加载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\系统.dll'。跳过加载符号。模块已优化,调试器选项“只是我的代码”已启用。
“iisexpress.exe”(CLR v4.0.30319:/LM/W3SVC/2/ROOT-2-131239476152101487):已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0。 0__b77a5c561934e089\System.Core.dll'。跳过加载符号。模块已优化,调试器选项“只是我的代码”已启用。
(ETC)
reference - CSharpCodeProvider 如何引用当前程序集
我正在尝试使用 CSharpCodeProvider 动态编译代码。在引用的程序集中,我正在为 typeof(Program).Assembly.CodeBase) 添加一个引用参数,正如这里所建议的那样,但它不起作用。我仍然收到一条错误消息
该名称的文件确实存在 - 唯一的区别是文件扩展名在文件资源管理器(“.dll”)中显示为小写,但除此之外,错误消息中的文件名与我要引用的 dll 的名称和路径匹配。
知道为什么编译器在这种情况下看不到引用的 dll 吗?
这是我的代码的相关部分: