问题标签 [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.

0 投票
1 回答
136 浏览

c# - C# CompilerParameters.OutputAssembly 导致应用程序重新启动

我正在开发一个 ASP.Net C# 应用程序,用户可以在其中动态编译一段代码。在这种情况下,我使用的是 CSharpCodeProvider。

我刚刚遇到的问题是 CompilerParameter.OutputAssembly 以某种方式导致应用程序重新启动(我检查了编译后是否调用了 Application_Start() )。一旦我把它放在评论中,编译就像魅力一样工作,不会发生重新启动。

我想知道这种情况是否属实,或者我是否在某处遗漏了一个概念。我从 CompilerParameter.OutputAssembly 了解到的是,它使程序集输出到指定的文件中。应用程序重启正常吗?

0 投票
1 回答
962 浏览

c# - 可以为 CSharpCodeProvider 中的引用设置绝对路径吗?

我正在使用 CodeDom 创建新的 .cs 文件,后来想使用 CSharpCodeProvider 编译/运行它们,但引用有一些问题。

代码如下所示:

“First.dll”和“Second.dll”与我生成的 .cs 文件存在于同一个文件夹中,如果我直接运行它,我会出错。如果我将它们移动到我的项目 bin 目录中,它可以正常工作,但我宁愿将它们分开。

是否可以为“First.dll”和“Second.dll”设置绝对路径或包含我所有引用的目录的路径,而不是将它们移动到我的 bin 目录?

我试图将 CompilerParameters 更改为绝对路径,但这没有帮助。

0 投票
1 回答
132 浏览

c# - 如何在连接字符串中添加数据目录以在客户端机器上部署应用程序?

我在开发过程中在 C# 中创建了一个 Windows 窗体应用程序,我使用了以下连接字符串,它工作正常

但现在我需要在客户端机器上部署应用程序,我必须在我的连接字符串中添加数据目录选项,我这样做是

当我更改字符串然后它抛出错误

无法打开物理文件“D:\Other Projects\Employee\Employee\bin\Debug\mydatabase.mdf”。操作系统错误 2:“2(系统找不到指定的文件。)”。无法将文件“D:\Other Projects\Employee\Employee\bin\Debug\mydatabase.mdf”附加为数据库“mydatabase”。

并将连接字符串称为

我使用的是 SQL Server 2008。

0 投票
1 回答
856 浏览

c# - 使用 CSharpCodeProvider 时出现运行时错误程序集“System.Runtime”

我收到有关缺少参考的运行时错误。

“System.Object”类型是在未引用的程序集中定义的。您必须添加对程序集 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 的引用

我正在使用 MVC 应用程序并在我的代码中使用 CSharpCodeProvider。

我没有收到任何编译错误,但compileResult由于上述原因出现运行时错误?

我什assemblies至在同样的错误之后添加了标签。web.cofig有什么线索吗?

0 投票
0 回答
88 浏览

c# - 使用 CSharpCodeProvider 从 Main() 返回字符串

我正在尝试使用 CSharpCodeProvider 编译 C# 代码(没什么复杂的,只是 Main() )。此代码返回一个字符串,但我不明白如何将此值传递给我的函数。可能吗?

0 投票
1 回答
1867 浏览

c# - 获取声明类型的 .cs 文件的文件路径

我正在开发一个程序资产生成系统,我希望它能够检测特定资产的源文件是否已更改,以便它只需要重新生成实际不同的资产。

一些谷歌搜索告诉我,没有办法使用简单的反射来获取类型的源文件,所以我试图想出一个解决方法。这就是我正在做的事情:

  1. 使用 Directory.GetFiles 获取项目目录中所有 .cs 文件的列表。
  2. 使用 CSharpCodeProvider.CompileAssemblyFromFile 将每个文件编译成自己的程序集。
  3. 如果compiledAssembly.GetType(targetType.FullName)存在,那么就是targetType的源文件。

问题是第 2 步给出了没有任何描述的编译错误:

  • (0,0):错误:
  • (0,0):错误:在(包装器托管到本机)System.Reflection.Assembly:GetTypes(布尔)
  • (0,0):错误:在(包装器托管到本机)System.Reflection.Assembly:GetTypes(布尔)
  • 等等

我认为这可能是因为当前程序集或应用程序域或任何已经包含它试图编译的确切类型,但这只是一个猜测。有谁知道可能导致这些错误的原因或我如何避免它们?

编辑:这是第 2 步的主要代码:

0 投票
1 回答
769 浏览

c# - 指示 CodeDomProvider 编译器以英语显示错误和警告消息?

我正在使用这些System.CodeDom功能在运行时编译代码,我想知道是否可以指定编译器参数或其他解决方法来以英语而不是使用系统的默认语言显示编译器错误。

但是,在MSDN文档中,我找不到与显示语言相关的任何内容:

当我想在构建项目时在Visual Studio IDE下以特定语言显示编译器错误时,我所做的是更改当前文化,然后我尝试在我的应用程序以及我正在编译的文件中设置文化应用程序,但首先它不会生效,其次我更喜欢避免这样的技巧,因为它可能需要自动生成代码(导入、引用和调用CodeDomProvider编译器时的代码):

0 投票
1 回答
767 浏览

c# - 加法赋值运算符如何表现

加法赋值运算符如何在这里表现 -

0 投票
2 回答
420 浏览

f# - 从 Typeprovider 动态加载程序集

我正在尝试向我正在开发的类型提供程序添加一项功能,以允许用户指定类型。由于类型提供程序不能提供泛型方法,因此似乎唯一的方法是引用具有该类型的程序集。

我尝试使用 Owin 库中的类型对此进行概念验证,但是在尝试使用提供的类型时遇到了问题:

在此处输入图像描述

它说它找不到该文件,即使它显然存在,否则CSharpCodeProvider我正在使用的会给出错误(它之前已经为不正确的文件路径做过)。我试过在一个单独的非类型提供项目中重现这个问题,但它在那里工作。

这个项目的代码在这里(输入类型分支): https ://github.com/isaksky/routeprovider/tree/input-type

您可以通过打开主 RouteProvider 解决方案并调试 DebugOwin 示例来查看问题(它将为使用 RouteProvider 的示例解决方案打开一个新的 Visual Studio 实例)。

0 投票
1 回答
210 浏览

c# - 如何动态运行 C# 项目

我正在编写一个 C# Winforms 应用程序,用户可以在其中使用 CSharpCodeProvider 类创建和运行他们自己的动态脚本。

我使用简单的代码(作为字符串)和多个类文件(外部文件)成功地完成了这项工作,但不确定如何加载整个 C# 项目并成功编译和调用代码。

我做了一些研究,但找不到所需的信息,例如教程或一些示例代码。

我正在使用一个 WinForms 应用程序,以一个简单的表单和按钮作为 C# 项目的示例来编译和调用。

有人可以告诉我需要添加的源文件来编译和调用正确的整个 C# 项目吗?我需要包含 .resx 和 .Designer.cs 文件吗?另外,是否有我需要添加的特定引用程序集?