在自定义服务器控件asp中使用.resx && .resource文件

Dot*_*Net 5 c# asp.net resx resgen

我编写自己的服务器端控件并使用在.resx文件中存储的图像.在控制台应用程序中,此代码工作正常:

     ResXResourceReader rsxr = new ResXResourceReader("Resource1.resx");

     foreach (DictionaryEntry d in rsxr)
     {
        Console.WriteLine(d.Key.ToString() + ":\t" + d.Value.ToString());
     }

     rsxr.Close();
Run Code Online (Sandbox Code Playgroud)

但在这里

      protected override void RenderContents(HtmlTextWriter output)
    {
        ResXResourceReader rsxr = new ResXResourceReader("Resource1.resx");

        base.RenderContents(output);

        foreach (DictionaryEntry d in rsxr)
        {
            output.Write(d.Key.ToString());
        }

    }
Run Code Online (Sandbox Code Playgroud)

我感到很恐怖:

找不到文件'C:\ Program Files\Common Files\Microsoft Shared\DevServer\10.0\Resource1.resx'

我尝试使用ResourceManager但它需要.resource文件.我无法访问resgen工具(命令promt不理解[resgen]命令)并安装它(发生错误).

第一:为什么我不能读.resx?

第二:如何安装resgen工具?

谢谢.

Pra*_*ani 1

将资源文件存储App_GlobalResources在应用程序根目录的文件夹下或App_LocalResources与用户控制文件同名的文件夹中被认为是一种很好的做法。因此,例如用户用户控件是本地资源文件夹中的 uc.ascx 文件应该是 uc.ascx.resx。这样就更容易维护,并且 ASP.NET 会自动检测到它。

现在你的答案:

第一个问题:直接 使用Server.MapPath("~/")指向物理位置的 web.config 。如果您想使用 Controls 文件夹中的资源文件,您必须编写Server.MapPath("~/Controls/Resource1.resx")以获取路径。

不确定您想使用 resgen 工具做什么?当您编译应用程序时,资源文件也会被编译。选择您的资源文件并单击F4,它将显示您的构建操作,在构建操作中选择资源,您的资源文件将包含在程序集中。

您可以查看这篇文章以获取更多信息:How to use image resources in asp.net website?

  • 好的。我为我的 .resx 文件使用 [嵌入资源] 选项。那么您应该解释为什么此代码给出(在控制台应用程序中)MissingManifestResourceException [code] ResourceManager resourceManager = new ResourceManager("ConsoleApplication1.Resource1.resx", GetType().集会); 对象 a = ResourceManager.GetObject("line.gif"); [/代码] (2认同)