【问题标题】:Reading txt file and import as a c# code in a class读取 txt 文件并导入为类中的 c# 代码
【发布时间】:2020-04-01 21:08:31
【问题描述】:

我想知道这是否可能。例如,bootstrap 有新版本,我需要更改 cdn url 并在 asp.net 网络表单中为 RegisterBundles 重新构建项目。这是一个简单的 url,我们不需要为那个问题重新构建项目。

是否可以读取 *.txt 文件并在类中用作 c# 代码。上课和以前一样,我们会活下来。

RegisterBundles 示例代码:

public class stylescriptbundle
{
   public void RegisterBundles(BundleCollection bundles)
   {
      BundleTable.Bundles.Add(new ScriptBundle("/mybundle").Include(
         "https://code.jquery.com/jquery-3.4.1.slim.min.js",
         "https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js",
        "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" 
      );
      BundleTable.Bundles.UseCdn = true;
   }
}

【问题讨论】:

  • 我可以读取/写入 txt 文件并显示在页面中,但我不确定如何在类中调用这些字符串作为 c# 代码。

标签: c# asp.net webforms bundle global-asax


【解决方案1】:

首先,与 robbpriestley 所说的类似,您应该做的是从文件中读取字符串,以便将它们包含在包中。配置文件是最好的,但如果您对 .txt 非常感兴趣,请尝试以下操作:

var scripts = File.ReadAllLines("someConfigurationFile.txt");
var bundle = new ScriptBundle("/myBundle");
foreach(var script in scripts)
{
    bundle.Include(script);
}
BundleTable.Bundles.UseCdn = true;
BundleTable.Bundles.Add(bundle);

(以上只是我的想法,您可能需要对其进行调整才能使其正常工作。)

也就是说,如果您仍想在运行时编译代码,您可以使用Microsoft.CSharpMicrosoft.CodeDom.Compiler 命名空间,根据this tutorial。出于存档原因,我将在此处尝试对其进行总结。

  1. 将您的代码转换为字符串:var codeStr = File.ReadAllText("runtime compiled.cs");
  2. 创建提供程序和编译器:var provider = new CSharpCodeProvider(); var parameters = new CodeParameters();
  3. 定义编译器的参数。听起来您肯定想将其编译到内存中,并且您需要引用您在该代码中使用的任何程序集:parameters.GenerateInMemory = true; parameters.ReferencedAssemblies.Add("necessaryAssembly.dll");
  4. 编译:var results = provider.CompileAssemblyFromSource(parameters, code);
  5. 检查错误
  6. 获取你的程序集:var assembly = results.CompiledAssembly; 这样你就可以得到你的类型:var program = assembly.GetType("first.program"); 这样你就可以得到你的方法:var main = program.GetMethod("Main");
  7. 然后您可以使用 Invoke 调用您的方法:main.Invoke(null, null);(查看 MethodInfo 上的参考资料。)

【讨论】:

  • 此信息对了解情况非常有帮助。我只是不想膨胀配置文件。这就是为什么我正在寻找快速简便的可编辑可能性。谢谢,
【解决方案2】:

不要为此使用 TXT 文件。将字符串作为 settings 放入您的 web.config,然后使用提供的 ASP.NET ConfigurationManager 来引用它们。

例如,请参阅:https://stackoverflow.com/a/12892083/1348592

【讨论】:

  • 谢谢。我会用 ConfigurationManager 做更多的练习。
猜你喜欢
  • 2018-04-12
  • 2021-02-06
  • 2020-03-06
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多