C# 从嵌入式资源引用嵌入式资源

C# 从嵌入式资源引用嵌入式资源,c#,winforms,resx,C#,Winforms,Resx,我正在使用WinForms浏览器控件来显示作为资源嵌入的html文件中的一些内容,效果很好 我现在想在我的应用程序中嵌入一些脚本和样式表,但如果可能的话,我想不出如何从html页面引用其他嵌入的文件 我目前的解决方案是在显示之前加载资源并将其添加到浏览器控件的文档中,但是如果我想使用类似JQuery的东西,这可能会有点混乱。如果脚本和样式表与HTML文件位于同一目录树中,则可以使用相对路径(例如)。还是我遗漏了什么?如果脚本和样式表与HTML文件位于同一目录树中,您可以使用相对路径(例如)。还是

我正在使用WinForms浏览器控件来显示作为资源嵌入的html文件中的一些内容,效果很好

我现在想在我的应用程序中嵌入一些脚本和样式表,但如果可能的话,我想不出如何从html页面引用其他嵌入的文件


我目前的解决方案是在显示之前加载资源并将其添加到浏览器控件的文档中,但是如果我想使用类似JQuery的东西,这可能会有点混乱。

如果脚本和样式表与HTML文件位于同一目录树中,则可以使用相对路径(例如
)。还是我遗漏了什么?

如果脚本和样式表与HTML文件位于同一目录树中,您可以使用相对路径(例如
)。还是我遗漏了什么?

嵌入文件,然后在渲染之前将每个文件提取到临时文件夹:

string ret = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(),
    "outlook.addin.a.html", "a.html");

var bsjs = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(),
    "outlook.addin.bootstrap.js.bootstrap.min.js", "bootstrap.min.js");

public static string GetTempFileFromEmbeddedResource(Assembly assembly, string resourceName, string fileName)
{
    string output;
    using (Stream s = ResourceUtility.GetEmbeddedResourceStream(assembly, resourceName))
    {
        StreamReader sr = new StreamReader(s);
        output = sr.ReadToEnd();
    }

    return CreateLocalTempFile(output, fileName);
}

嵌入文件,然后在渲染前将每个文件提取到临时文件夹:

string ret = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(),
    "outlook.addin.a.html", "a.html");

var bsjs = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(),
    "outlook.addin.bootstrap.js.bootstrap.min.js", "bootstrap.min.js");

public static string GetTempFileFromEmbeddedResource(Assembly assembly, string resourceName, string fileName)
{
    string output;
    using (Stream s = ResourceUtility.GetEmbeddedResourceStream(assembly, resourceName))
    {
        StreamReader sr = new StreamReader(s);
        output = sr.ReadToEnd();
    }

    return CreateLocalTempFile(output, fileName);
}

myFoo.js将作为一种资源嵌入到可执行文件中,就像html文件一样,因此没有相对路径这样的东西。不知怎么的,我错过了。在这种情况下,我认为你目前的解决方案可能是合理的,即使它有点混乱。我正在考虑接受这个答案,因为它让我意识到我太努力了,不想变得聪明。我最后做的是压缩所有html资源,并在第一次运行时将其解压缩到用户的AppData目录中,根本不用担心将脚本或CSS注入WebBrowser控件的文档中。这似乎也是一种完全合理的方法。myFoo.js将作为一种资源嵌入可执行文件中,就像html文件一样没有相对路径这样的东西。我明白了-您希望它们作为应用程序中的嵌入式资源。不知怎么的,我错过了。在这种情况下,我认为你目前的解决方案可能是合理的,即使它有点混乱。我正在考虑接受这个答案,因为它让我意识到我太努力了,不想变得聪明。我最后做的是压缩所有html资源,并在第一次运行时将其解压缩到用户的AppData目录中,而不必担心将脚本或CSS注入WebBrowser控件的文档中。这似乎也是一种完全合理的方法。