如何获得被嵌入的资源的路径?
我在我的C#项目中包括了一个围网资源;我知道它的名称以及如何提及它,所以我想知道是否有任何方法可以获取它的绝对路径... 解决方案 就像其他人所说的那样,嵌入式资源嵌入了编译的组件中,并且不存在文件系统上;如果您想在文件系统上使用文件,则应将构建操作更改为"无",然后将副本转换为"输出目录"为复制值之一. 但是,如果您确实是要嵌入资源,则可以使用getManifestResourcelemcestream方法访问汇编类的方法,如下所示: GetType().Assembly.GetManifestResourceStream("someresourcestringhere") (上面的代码假定您正在同一组件中的类中访问该类的资源). 嵌入式资源通常遵循以下格式,这是您将传递到getManifestResourceStream方法的字符串: 默认项目namespace.folder name(如果有).file name 文件夹名称中的任何空格都被
0 2024-04-16
编程技术问答社区
在C#中从资源中读取一个文件并将其写入磁盘
我有一些文件,这些文件嵌入了资源中.如何通过C#? 将这些文件保存在磁盘上 解决方案 使用流:getManifestResourceStream为您提供了资源中的文件流,并使用流词器可以将该流的内容写入磁盘. 其他解决方案 这应该可以完成您的工作: string strTempFile = Path.GetTempFileName(); File.WriteAllBytes(strTempFile, Properties.Resources.YourBinaryFileInResource); 确保,随附的文件的文件类设置为"二进制". 其他解决方案 您可以获取资源流,然后在写入文件时从流中读取. byte[] buffer = new byte[1024]; using (Stream output = File.OpenWrite("filename")) {
0 2024-04-16
编程技术问答社区
c# | 如何为资源添加字符串?
如何将字符串添加到资源中.因此,当我重新启动程序时,该字符串应在资源中. 之后,当我添加它如何得到它?例如: textBox1.Text = // string that I've added; 谢谢... 解决方案 使用我使用的设置已经有一段时间了,它们的工作效果很好.如果要更改设置,则可以执行此操作: Settings.Default.YourSetting = //Something Settings.Default.Save(); 其他解决方案 资源不是解决您问题的正确解决方案,它们旨在提供各种(语言)版本的常数字符串.在执行程序期间生成它们的是可能的可能可能并不容易.即使您成功地生成它们,保存文件也很难 - 它们存储在.exe或.dll文件中,因为它刚刚执行,可能会锁定. 使用设置./p>
0 2024-04-16
编程技术问答社区
属性.资源没有加载图像
我在Visual Studio 2012 C#中有一个游戏应用程序.我在项目的资源文件中使用了所有的.png图像. 您是否知道为什么我可以使用alterties.resources访问所有文件? 我检查了完整的filepath,并将其设置为资源文件夹.就像我添加的 - >现有项目一样,它在程序中添加并添加了图像. 看起来就像其他图像.我不知道为什么它没有加载.我需要这个,因为我需要通过电子邮件将.EXE发送给我的讲师,而没有此图像,该项目一无所有! 我在资源文件中添加了此内容 internal static System.Drawing.Bitmap grid_fw { get { object obj = ResourceManager.GetObject("grid.fw", resourceCulture); return ((System.
0 2024-04-16
编程技术问答社区
我无法从WPF的代码中使用包Uri来访问资源图像文件。
我的应用程序中有一些图像资源,我想编程访问. 现在我基于某些源代码,因此我需要通过URI进行安排,因此我的代码是: new BitmapImage(new Uri("pack://application:,,,/YearBook;component/Resources/Output/" + i.ToString() + ".jpg", UriKind.RelativeOrAbsolute)); 尽管当我尝试访问它时,我会发现找不到资源的错误(名称是正确的) 有人知道为什么吗? 编辑: 可能需要在汇编文件中添加一些汇编? 解决方案 最后,以所有类型的方法来接近此资源,我的问题是我在子文件夹中忘记了1个文件夹. 此代码最终有效: new BitmapImage(new Uri("pack://application:,,,/Resources/Images/Output/" + i.ToString() + ".jpg", UriKin
0 2024-04-16
编程技术问答社区
在运行期间改变嵌入式资源文件
我有一个书面程序,该程序使用资源(嵌入式文本文件)进行默认配置.我希望能够允许用户更改此默认行为.我想知道如何修改嵌入式资源文件,以便使用以下时间程序将使用修改版本. 感谢帮助 解决方案 我认为您要寻找的是 settings 文件. 嵌入式资源被编译到您的exe/dll中,并不是要修改的. 其他解决方案 这是一种更新项目中嵌入的文件的方法,这是XML文件的示例.您可以根据需要将其更改为TXT文件 string path = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData), Application.CompanyName); path = Path.Combine(path, Application.ProductName); path = Path.Combine(path, subFolder); path = Path.Combine
0 2024-04-16
编程技术问答社区
C#-在运行时将文件作为资源添加到我的Exe中
我发现可以在Visual Studio 2010中的C#资源中添加文件(*.jpg).据我所知,应该在运行时重新组装EXE.我不想一个人剥离EXE.我正在寻找为我做到这一点的c#例程.当然,我不想修改运行EXE,而是想修改它的副本.如果我需要在运行时再次编译,我也可以将其放置在EXE中. 我的目标: 创建运行exe的副本 将文件添加到该副本以某种方式. 关闭运行应用 当用户执行副本时,它必须将文件作为资源内部.就是这样. 编辑: C#编译器 + Visual Studio 2010可在目标系统中获得. (我不是在编程完整的安装程序,请不要说那些不好的话:"重新发明"和"轮子",我自己知道它们) 解决方案 您将很难以不受完整编译器的好处破坏您的可执行文件的方式修改您的资源部分. 您可以做的是: 制作一个zip文件(或包含所有文件的其他存档) 将zip文件内容的哑巴涂到可执行文件的末尾 还附加了包含存档长度的INT32 您可以通过为
0 2024-04-16
编程技术问答社区
Visual Studio-用资源替换硬编码的字符串的工具
我有一个装满硬编码字符串的大型ASP.NET项目,现在必须将其提取到资源中.这些字符串几乎可以在任何地方找到(.cs文件,.aspx文件,.ASCX文件等),并且文件的数量很大.我正在寻找的是一种工具(或任何方式),可以将所有这些硬编码字符串一次拍摄并将它们全部放在资源文件中,而不是我手动通过每个文件.这样的东西是否存在? 注意:我知道最好在第一次需要时立即将这些字符串放在资源中,但这是一个2岁的项目,没有人真正关心问题"哲学). 非常感谢. 更新:我尝试了Coderush(出于明显的原因,我无法尝试Rgreatex),并且我很难使用它.主要问题是我要寻找的字符串主要位于.aspx文件中,并且这些文件中的字符串没有可用的"重构到Resource"命令. 例如,我可以有这样的元素:
0 2024-04-15
编程技术问答社区
在后面的代码中使用一个资源图像
我需要动态地更改应用于我的一个按钮之一的背景图像,但无法弄清楚如何.图像被添加到项目中,并将其构建操作设置为资源.我尝试了以下内容: buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative))); 这将成功编译,但会以DirectoryNotFoundException崩溃,说"找不到路径的一部分c:\ images \ inchdown.png'." 我不希望该应用在磁盘上查找图像.如何将图像用作嵌入式资源?我认为这涉及将构建操作更改为嵌入式资源,但是如何在代码背后的代码中使用此资源? 解决方案 您必须将图像构建为资源不是嵌入式资源. WPF项目有专门使用资源. 在过程代码中使用它: buttonUnits.Background = new ImageBrush(new BitmapImage(ne
0 2024-04-15
编程技术问答社区
矢量图像作为可重用的XAML片段
我想在某些WPF应用程序/库中重复使用一些XAML片段作为图像. 问题的背景如下: 在WPF应用程序中重复使用位图映像很容易.图像可以作为资源添加,我可以在XAML的许多地方使用,因此图像将相同. ,但我想为向量图像做同样的事情.图像本身可以表示为Path,但是我不能将相同的Path重复使用为资源,因为仅禁止在几个不同的位置使用它(可能来自几个UI线程)(UI元素只能具有一个逻辑父). 此外,如果我想从几个Path s构建"映像",请使用Canvas,就会变得更加复杂.或一些任意的XAML代码. 我尝试使用Style为Path>,因此图像以这样的方式表示: 这似乎是一种可重复使用的方法,但我关注两个问题: 如果向量映像的实现从Path更改为(例如)Canvas,我不仅需要用样式替换它,而且还需要替换使用它的
0 2024-04-15
编程技术问答社区
从资源加载 XML
我有一个嵌入式XML作为资源.尝试加载时: XDocument quoteDocument = XDocument.Load(Properties.Resources.Quotes); 我有一个错误: uriformate xception 如何从资源中正确加载XML? 解决方案 使用以下XDocument XDocument quoteDocument = XDocument.Parse(Properties.Resources.Quotes); 此代码适用于xmldocument XmlDocument quoteDocument = new XmlDocument(); quoteDocument.LoadXml(Properties.Resources.Quotes);
0 2024-04-15
编程技术问答社区
我如何从我的项目中删除不必要的资源?
我正在使用一个非常大的项目(一个包含16个项目的解决方案,每个项目包含约100个文件). 它是用Visual Studio 2005的C ++/C#编写的. 其中一个项目拥有大约2000个资源,其中仅使用了400个. 如何删除那些未使用的资源? 我试图通过搜索用过的执行方法来完成任务. 它起作用了,我能够构建解决方案,但在运行时破裂. 我猜是因为使用了枚举. (重要) 如何确保它不会在运行时破裂? 编辑: 我认为一种方法可能是在运行时(以某种方式)生成(未找到)的资源(找不到). 但我不知道... 任何东西. 注意:如果仍然存在一些不必要的资源,则可以. 解决方案 我要做的就是编写一个自定义工具来搜索您的源代码. 如果您从标头文件中删除资源ID(即可能称为resource.h),然后重新编译并没有警告:那是一件好事. 这是我要编写应用程序的方式.作为输入,您要仔细检查资源文件(Resource.H).打开标题文件(*.H)
0 2024-04-14
编程技术问答社区
在WinForms应用程序中使用WPF,将应用程序资源放在哪里?
目前,我们在 winforms 应用程序中托管了许多 wpf 控件.该应用程序使用System.Windows.Forms.Application.Run(...)方法和 wpf 控件使用ElementHost>. 托管. 在正常 wpf 应用程序中,我会定义a System.Windows.Application对象(App.xaml),并在其上运行呼叫.通常,任何应用程序级别 wpf 资源都将进入那里.我们没有这个. 如何为 wpf 控件指定应用程序级别资源,但仍以 winforms 应用程序运行? 解决方案 在托管环境中,您无法轻松访问该应用程序,WPF博士有几种在托管方案中工作的方法/10/05/standing-application-rosources-when-wpf-is-hosted/" rel =" noreferrer"> http://drwpf.com/blog/blog/2007/10/10/05/managing-managing-ap
0 2024-04-14
编程技术问答社区
对资源和GetManifestResourceNames()感到困惑。
我一直在学习C#和Visual C#IDE中的资源.我现在很困惑.我已经在Stackoverflow上阅读了一些页面,例如这是一个how-to-get-to-the-the-the-embebbed-resource和Microsoft的文档,但它使我感到困惑. 我的第一个问题:什么是资源:是.resources文件还是其中的文件,例如图标. 第二:当我使用getManifestResourCenames方法时:是否获取.Resources文件名或其中文件的名称.当我在程序中使用它时,我只会得到.Resources文件,但是阅读此类主题,以下是循环的内容,我会得到印象,我应该得到我的名字.resources文件中的文件. 是我,还是这个术语真的有些混乱?谁能让它更清楚?感谢您的帮助. 解决方案 资源是您通过将其标记为"嵌入式Resource"来编译的任何文件. GetManifestResourceNames()只是一个枚举者,它为我们提供了所有嵌入式编译的资源
0 2024-04-14
编程技术问答社区
具有自定义ResourceProvider的DataAnnotation
我创建了一个自定义ResourceProvider 从数据库中获取本地化信息.我现在想使用DataAnnotation将验证添加到模型中. DataAnnotation具有ErrorMessageResourceType和ErrorMessageResourceName属性,但ErrorMessageResourceType仅接受System.Type(即编译的资源文件) 有什么方法可以获取DataNannotation使用自定义ResourceProvider? 解决方案 我意识到这是一个古老的问题,但想增加一点.我发现自己处于同样的情况,似乎没有关于此主题的任何文档/博客.尽管如此,我还是想出了一种使用一个警告的自定义资源提供商的方法.需要注意的是我在MVC应用程序中,所以我仍然有HttpContext.GetLocalResourceObject()可用.这是ASP.NET用于本地化项目的方法.不存在资源对象并不能阻止您编写我们自己的解决方案,即使它是DB表的直
0 2024-04-14
编程技术问答社区
是否可以在WinForms中使用设计器访问不同项目的资源?
我有一个相当大的解决方案,其中有许多项目.理想情况下,我想创建一个资源项目,其中包含我在整个应用程序中需要的所有嵌入式图标. 我已经阅读了人们通过代码引用它们的文章,但是可以在设计师中访问该项目的资源吗?换句话说,我想在设计器中单击表单的背景图像属性时选择资源. 如果没有,试图将我的资源从主要项目中解脱出来时,我应该考虑哪种架构?每当我修改一行或两行时,发布100MB的可执行文件可能不是一个明智的主意. 解决方案 从我能告诉的最好的情况下,您无法操纵设计师中其他组件的资源.当前项目只有一个. 这就是我的方式: 创建一个类库项目.在库中,添加|新项目|资源文件.将资源(图像,图标)添加到该文件(ex:resource1.resx).在该库中的一堂课中,添加了返回资源的公共成员. public static class Class1 { public static Bitmap Image1 { get { return Resource1.Im
0 2024-04-14
编程技术问答社区
是否有办法使强类型资源文件公开(而不是内部)?
这是我想做的: 我想创建一个包含我的资源文件的库项目(即,UI标签和Whatot).然后,我想在我的UI和测试中使用资源库. (即,基本上有一个我从多个项目中引用的资源的共同位置.) 不幸的是,由于stronglytypedresourcebuilder(生成资源代码的.NET类)使资源文件内部内部内部,因此我无法从另一个项目(即,我的UI或测试)中引用我在库中强烈键入的资源,没有跳过篮球(即,类似于所描述的东西在这里编写公共包装类别/功能). 不幸的是,这两种解决方案都消除了我保持参考强烈投入的能力. 是否有人找到了一种直接的方法来创建可以从多个项目引用的强烈键入的.NET资源? 我宁愿避免必须使用构建事件才能实现这一目标(即做一些用"公共"替换所有"内部"实例之类的事情,但这基本上是我的后备计划,如果我可以't找到答案.. 解决方案 不确定您正在使用哪个版本的Visual Studio,因此我将对任何一个步骤进行: vs 2008-当您在设
0 2024-04-14
编程技术问答社区
确定管理与非管理的资源
关于托管与未管理资源有很多问题.我了解两者的基本定义.但是,我很难知道何时管理或不受管理资源或对象. 当我想到不受管理的资源时,我倾向于想到的本地代码不直接属于.NET,例如Pinvoke或编制资源.我通常会考虑将资源与使用HW(例如文件句柄或网络连接之类的HW)接口的资源. .net对象包含本机非管理资源(例如FileStream. )呢? a FileStream必须使用非托管资源,但是当我实施IDisposable模式时,我应该认为这是受管理的或不受管理的资源吗? 到目前为止,我一直在假设如果对象实现IDisposable,则将其进行管理.我怎么知道应该将IntPtr作为一个非托管的沉默来处理? 解决方案 a FileStream必须使用非托管资源,但是当我实施可置的模式时,我应该认为这是管理或未托管的资源吗? 文件流是托管资源. 托管资源是包含(并且必须管理)非管理资源的类.通常,实际资源是几层. 到目前为止,我一直在假设如果对
0 2024-04-14
编程技术问答社区
资源(.resx)文件的关键命名规则?
我正在构建一个C#应用程序,该应用程序可能包含几个资源文件,用于存储用于语言翻译的字符串.我正在尝试提出我的resouce文件中键的命名约定.有人在我面前解决了这个问题吗? 解决方案 只需使用Pascal命名惯例即可.不要将密钥归因于模块或类.概括它,以便可以重复使用. eg:readwriteWarningMessage 点分离的惯例适合菜单项.但是动态生成或用户消息的字符串呢? 其他解决方案 请参阅 microsoft.com/en-us/dotnet/standard/design-guidelines/naming-resources .正如@bobbyalex所说,这包括使用PascalCasing,因为生成的资源设计器文件确实将资源实现为属性. ✔️确实在资源密钥中使用pascalcassing. ✔️确实提供了描述性的而不是简短的标识符. ❌请勿使用主要CLR语言的特定语言关键字. ✔️确实在命名资源中仅使用字母数字字符和
0 2024-04-14
编程技术问答社区