未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)[关闭]

2023-12-02

我正在尝试使用一些即时代码编译VBCodeProvider班级。我想要做的是修改代码中程序集中的公共变量。

我有一个Public TestString As String = ""在我的应用程序中。

这是我用来编译的代码:

    Dim codeProvider As New VBCodeProvider()
    Dim optParams As New CompilerParameters
    optParams.ReferencedAssemblies.Add("MyAssembly.exe")
    optParams.ReferencedAssemblies.Add("system.windows.forms.dll")
    optParams.CompilerOptions = "/t:library"
    optParams.GenerateInMemory = True
    Dim results As CompilerResults = codeProvider.CompileAssemblyFromSource(optParams, RichTextBox1.Text)

    If results.Errors.Count > 0 Then
        Dim sb As New StringBuilder("Compilation Failed with the following error(s)" + CR_LF + CR_LF)
        For Each CompErr As CompilerError In results.Errors
            sb.Append(String.Format("Line {0} - {1} ({2}){3}", CompErr.Line, CompErr.ErrorText, CompErr.ErrorNumber, CR_LF))
        Next
        MessageBox.Show(sb.ToString, "Compile Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
        Dim assy As System.Reflection.Assembly = results.CompiledAssembly
        Dim exeinstance As Object = assy.CreateInstance("Script")
        Dim typ As Type = exeinstance.GetType
        Dim method As MethodInfo = typ.GetMethod("Main")
        method.Invoke(exeinstance, Nothing)
    End If

这是我的文本框中的代码:

Imports System
Imports MyAssembly

Class Script
    Sub Main()
       TestString="foo"' <-- This line fails compilation
    End Sub
End Class

我得到的错误是未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)


就像普通的 VB.NET 一样,除了添加引用之外,您还必须Imports相关的命名空间,或完整指定它。 (您已编辑问题以现在包含此内容。)

将代码插入 VS2008 中的新控制台项目(因为这是我打开的)并调整程序集名称后,我看到了与您相同的结果。

我通过添加修复了它Public为默认值Module Module1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)[关闭] 的相关文章

  • 针对 .NET 3.5 和 Silverlight

    假设我已经有一个构建 NET 3 5 程序集的项目 现在我想为 Silverlight 构建这个程序集 并且进一步以最小的努力维护其 Silverlight 版本 什么是不可接受的 为 Silverlight 构建创建单独的项目 什么是可以
  • 我应该在学习 ASP.NET 和 Sharepoint 之前学习 .NET 和 C# 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是 Unix 和 Linux 的资深用户 在这些技术方面分别拥有大约 30 年和 14 年的经验 但为了扩展我的工具箱 我正在寻找有关学习 S
  • 是否可以使用字符串键/值对初始化新的 System.Collections.Generic.Dictionary ?

    是否可以创建并初始化System Collections Generic Dictionary http msdn microsoft com en us library 6918612z VS 80 aspx在一条语句中包含字符串键 值对
  • 支持 Hexagon Maps for .NET 的开源 2D 游戏引擎

    我找不到 2D 游戏引擎来为 net 创建六边形地图 我能找到的最好的是 Xconq http sourceforge net projects xconq http sourceforge net projects xconq 和pyga
  • 任务取消异常 (ThrowForNonSuccess)

    这是这个问题的延续 多任务延续 https stackoverflow com questions 21154692 task continuiation 我已经按照答案更改了代码 但是现在我收到了TaskCancelledExceptio
  • nAnt 是否仍受支持并适用于 .net 3.5/VS2008?

    我正在使用 MSBuild 来构建我的东西 我想通过构建服务器使用 CruiseControl net 现在 CCNET 经常引用 nAnt 但看起来 ccnet 可以通过项目配置和 msbuild 完成 nant 可以完成的大部分工作 另
  • 调试时无法评估表达式

    当调试 asp net 代码 针对 IIS 运行并使用 Visual Studio 2013 并在断点中并尝试使用快速监视评估变量时 我经常遇到 无法评估表达式 的情况 从 asp net 项目文件夹中删除 suo 似乎可以解决问题 重新加
  • JIT编译后的代码是如何注入内存并执行的?

    考虑一个典型的 Windows x86 或 AMD64架构 内存为 分为可执行部分 无法写入 和 数据部分 可以写入但不能写入 被处决 想想 DEP JIT 在内存中编译方法 通常 不存储任何东西 磁盘 而是将其移动到哪里 下一条指令指针可
  • 如何防止在 .NET 中的表单初始化时触发值更改事件?

    考虑一个带有几个单选按钮和一个复选框的简单 NET 表单 每个单选按钮都有一个 CheckedChanged 处理程序设置 该处理程序根据复选框的状态执行某些操作 我的问题是 当我初始化要检查的默认单选按钮 从设计器属性窗口 时 会为该单选
  • 从 SynchronizationContext 派生

    简而言之 我实现了一个从 SynchronizationContext 派生的类 以便 GUI 应用程序可以轻松地使用 GUI 线程以外的线程上引发的事件 我非常感谢对我的实施提出评论 具体来说 有什么是您建议反对的或可能会导致我未预见到的
  • .NET 服务是否表现出线程敏捷性?

    与以下问题相关this https stackoverflow com questions 657735 how is asp net multithreaded and this https stackoverflow com quest
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 有没有更快的方法来获取卷序列号?

    您好 我正在使用此代码来生成机器签名 但执行起来需要相当长的时间 想知道为什么这么慢 有什么更快的方法推荐吗 Public Shared Function DriveSN ByVal DriveLetter As String As Str
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • 防止单个可执行文件的多个进程实例

    我正在使用 NET 和 C 我想阻止同一可执行文件的两个实例同时运行 但我不想阻止从另一个文件夹运行的同一进程 例如 我有一个位于两个不同位置的可执行文件 C MyProject Master Program exe C MyProject
  • 字符串比较在 PowerShell 函数中不起作用 - 我做错了什么?

    我正在尝试创建一个别名git commit它还将消息记录到单独的文本文件中 然而 如果git commit回报 nothing to commit working directory clean 它不应该将任何内容记录到单独的文件中 这是我
  • 自动化 WinDBG 或以其他方式从转储文件中提取信息?

    假设我有一个进程的内存转储 我想对其运行报告 所以本质上我想打开 WinDBG 加载 SOS 并运行一个脚本 该脚本运行一些命令 解析输出 然后基于该结果运行更多命令 除了像 SendKeys 这样的黑客行为之外 还有没有办法自动化 脚本化

随机推荐