【问题标题】:Javascript as embedded resource in a .NET Class library?Javascript 作为 .NET 类库中的嵌入式资源?
【发布时间】:2012-10-24 21:41:02
【问题描述】:

我正在运行一个引用类库的 MVC 项目。类库包含一个 javascript 文件,该文件的构建操作设置为“嵌入式资源”。

该文件实际发生了什么?我似乎无法使用 ResourceManager 获取它,因为我不知道它将资源放入的命名空间。

我的类库文件结构:

  • /项目
  • /项目/网站
  • /Project/Web/Js
  • /Project/Web/Js/Test.js

代码:

var t = this.GetType().Assembly;
var r = new System.Resources.ResourceManager("Namespace", t); //What is the namespace here?
var js = r.GetObject("Test.js");

【问题讨论】:

  • 程序集的根命名空间。
  • 不起作用。我收到以下异常:“找不到适合指定区域性或中性区域性的任何资源。确保在编译时正确嵌入或链接到程序集“YourNamespace.resources”或所有所需的附属程序集是可加载且完全签名的。”

标签: .net embedded-resource


【解决方案1】:

抱歉,我现在无法访问编译器,因此以下内容可能包含轻微错误。

var asm = typeof(MyClass).Assembly;
var stream = asm. GetManifestResourceStream("<rootnamespace>.Project.Web.Js.Test.js");
var reader = new StreamReader(stream);
String source = reader.ReadToEnd();

注意事项:

  • 使用typeof(x) 而不是GetType()。如果您从该类型继承,后者将给出不正确的结果。
  • 根命名空间可以在项目设置中找到/设置。 (在我的示例中,我假设“Project”是项目内的一个文件夹)
  • asp.net 有一个预构建解决方案,用于以这种方式使用资源。尝试为此查看Page.ClientScript。 (我不确定这是否也适用于 MVC,但我敢打赌它会)

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2012-11-25
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多