问题标签 [system-codedom-compiler]

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 回答
1627 浏览

c# - 以编程方式加载嵌入式资源文件

我最近实现了以下代码,以便以编程方式构建项目/exe。在这个 exe 版本中,我想在资源中存储一堆“实际文件”,作为流。

这是我如何将文件添加到资源文件(单数)中,然后将该资源文件嵌入到编译器参数中:

这很好用,不会产生任何错误,而且我实际上可以通过下面的代码在我构建的控制台应用程序(上面引用为 Prorgam.cs 的那个)中获取嵌入式资源文件。然而,我遇到的问题是将这个资源文件“加载”到应用程序程序集中/以某种方式获取它的值......这是我到目前为止的代码:

每当我运行构建的 exe 时,我都会得到以下结果:

有人可以告诉我为什么会这样吗?我已经尝试了我能想到的所有不同的文化集,但仍然没有任何结果。问题与我如何“嵌入”或我如何“加载”有关吗?

0 投票
1 回答
244 浏览

.net - 使用 CodeDomProvider 编译非命令行应用程序?

我编写了这个简单的函数来自动编译带有嵌入式资源的单个 exe 程序集:

问题是我需要编译一个非命令行应用程序,一个像这样的类,我提供了一个在应用程序运行时应该执行的方法:

但我找不到办法。

我只能编译控制台应用程序,因为 codeprovider 似乎需要一个入口点,所以我只能编译它,这不是我想要的:

我怎么能这样做以满足我的需要?

0 投票
1 回答
763 浏览

.net - Roslyn 编译器在错误的 bin 文件夹中查找 vbc.exe

我真的很喜欢 VS2015 中的新 VB14 语言功能(如?。符号和字符串插值)。在我们的 WinForms (.Net 4.5) 应用程序中,我使用 codedom 编译器动态运行动态报告代码。不幸的是,这不会自动支持新的语言功能。

为了让它工作,我尝试添加 Roslyn codedom nuget 包,但这会产生两个问题。

第一个问题是它在错误的位置查找编译器 \bin\debug\bin\roslyn\vbc.exe 而构建过程实际上在文件夹 \bin\debug\roslyn\ 中创建它。谁能告诉我如何解决这个问题,因为它使我的构建服务器部署失败?

手动复制 roslyn 文件夹(解决方法)并将其放置在 codedom 期望找到它的地方并不是真正的解决方案,但这会引发第二个问题,即它需要导入 System.Web.HttpRequest 和 System.Web.HttpResponse . 但我没有编译任何与网络相关的代码(winforms)。那么为什么会期待这个呢?

0 投票
1 回答
290 浏览

c# - 来自 CodeDomProvider 的 Console.WriteLine 文本

我正在尝试使用 CodeDomProvider 制作 C# 编译器。我设法得到错误,但我无法得到输出。

这是我到目前为止所拥有的:

CSharpCompiler是包含上述函数的类

compilerResults.Output总是空的。如果我运行这段代码:

我该怎么做才能显示消息“Hello world!”?

0 投票
1 回答
555 浏览

nuget - Visual Studio 2017 网站菜单“启用 C# 6 / VB 14”无法加载 Nuget 包

一段时间以来,每当我单击网站菜单“启用 C# 6 / VB 14”时,我都会收到一条异常消息,指出在以下主要资源中找不到“Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.2”:“ C:\Program 文件 (x86)\Microsoft Web 工具\Packages"

我检查了文件夹,发现它已升级到 1.0.3 版。(C:\Program Files (x86)\Microsoft Web Tools\Packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3)

我怎样才能使菜单再次完好无损以指向正确的版本?

0 投票
1 回答
940 浏览

c# - 使用 CodeDom 编译器时缺少添加的参考

我发现了与此类似的问题,但还没有找到专门解决我的问题的东西。

我有一些代码可以通过System.CodeDom.Compiler. 这很重要,因为我希望以后能够为不同的工作簿“插入”不同的编辑指令。

使用 Visual Studio 中的 References>Add... 将 Microsoft.Office.Interop.Excel.Dll 的引用添加到我的项目中,并且我使用.ReferencedAssemblies.Add如下方式为 CodeDom 编译器添加了 excel dll 的引用:

但不幸的是,出现了这个错误:

{错误 CS0006:找不到元数据文件“Microsoft.Office.Interop.Excel.Dll”}

有什么简单的方法可以告诉 CodeDom 编译器找到这个 dll 吗?

我已经compilerParams.ReferencedAssemblies.Add(typeof(Microsoft.Office.Interop.Excel.Application).Assembly.Location);按照其他地方的建议进行了尝试,但这仅指向已编译的程序 exe,而不是所需的 dll。

谢谢,乔。

0 投票
2 回答
7402 浏览

c# - 在 .netstandard 2.0 上迁移后无法编译简单的动态代码(CodeDom 抛出 System.PlatformNotSupportedException)

尝试编译此代码示例:

迁移到 .netstandard 2.0 之前一切正常

必须生成一个简单的类,如果只是复制代码并在 Visual Studio 中运行它,它就可以工作。具有一种返回 null 的方法的类。现在 CompileAssemblyFromSource 方法抛出

System.PlatformNotSupportedException:此平台不支持操作。在 Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) 在 Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources) 在 CnetContent.Jobs.DynamicCode.. CnetContent.Jobs.Core.JobBase.EvalRunCondition(String& 错误) 处的ctor(IEnumerable 1 referencedAssemblies, IEnumerable1 usings, String methodArgs, String codeSnippet)

我更新了 System.CodeDom 并且这个库支持 .netstandard 2.0,但是这个代码仍然不起作用。找不到任何有类似问题的案例。有任何想法吗?先感谢您!

0 投票
0 回答
41 浏览

c# - 如何从程序集的引用程序集中获取静态资源

我得到了一个由 System.CodeDomCompiler 在运行时创建的程序集。编译的程序集使用引用的程序集。此外,我将 CodeDomAssembly 声明为我在运行时编译的程序集,并将 RefAssembly 声明为 CodeDomAssembly 使用的引用程序集。

在 RefAssembly 中有一个名为 KeyHavester 的静态类,具有静态列表和静态属性/方法。CodeDomAssembly 包含 WPF 表单。我这样称呼这些表格:

好的,到目前为止它可以工作.. 表单返回对话框结果后,KeyHavester 类中有收集的键。静态类 KeyHavester 保存所有键,是 CodeDomAssembly 的引用程序集。所以我认为这应该可以像这样访问:

我得到的只是 RefType == null。那么如何通过 CodeDomAssembly 访问 RefAssembly 中的静态 KeyHavester 类呢?

RefAssembly 是否需要公共 Token?RefAssembly = {FunktionBibliothek,版本=1.0.0.0,文化=中性,PublicKeyToken=null}

我如何让它工作?

0 投票
1 回答
859 浏览

c# - C# / .NET - CodeDom.Compiler 设置程序集信息属性

我是 C# 新手,正在尝试使用 .NET 的 CodeDom.Compiler 编译应用程序并在输出的 exe 中正确生成程序集信息。我一直在寻找 MS Docs / Class 参考来这样做。是否可以在编译期间设置程序集信息?

编译我的源代码的代码:

输出 Exe 的汇编信息:

在此处输入图像描述

当我实际使用 Writer 保存 exe 时,此功能是否可用?

我非常感谢任何线索,谢谢。

0 投票
0 回答
1897 浏览

asp.net-mvc - Asp .net mvc web.config 文件中的 System.Codedeom 替代解决方案

最近,当我上传我的发布文件时,我在快速主机上发布了我的网站,他们说<System.Code>web.config文件中删除标签并检查预编译条件为真,但是在我的网站加载之后,剃刀语法不支持

编译错误

说明:编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:CS1525:无效的表达式术语“。”

源错误:

第 50 行:@{
第 51 行:
第 52 行:字符串 value1 = item.StartDate != null ?item.StartDate?.ToString("dd-MM-yyyy") : "未找到";
第 53 行:@Html.DisplayFor(x => value1)
第 54 行:}

源文件:f:\TFS\ManagementSystem\ManagementSystem\Views\Contracts\Index.cshtml 行:52

<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0。 1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=". vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /现在:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>