将资源嵌入到c#的本地exe中
我想使用C#嵌入EXE文件中的资源. 如果我使用C ++代码,它运行良好: UpdateResource(hResource,RT_RCDATA,MAKEINTRESOURCE(104), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPVOID)text,FileSize); C#我使用的代码: IntPtr handle = BeginUpdateResource(this.NomeFileCryptato, false); IntPtr fileptr = ToPtr(encrypted); bool res = UpdateResource(handle, "RT_RCDATA", "104", 1040, fileptr, Convert.ToUInt32(encrypted.Length)); EndUpdateResource(handle, false); 实际,C#代码将资源嵌入EXE文
38 2024-04-26
编程技术问答社区
如何使用和执行资源
在一个单词中,我对工作项目的逻辑是制作一个简单的程序,该程序从我的源代码中启动文件,这可能是" setup.exe"之类的,但是避免了文件夹中的文件(即要执行)我想对其进行编译或与我编码的程序合并(我的程序 +外部文档) 我可以在Debug文件夹中的compleiled.exe文档中看到其中两个已合并在一起('当我在资源中添加程序但无法正确使用的文件时,文件大小更大) ) 我试图在此示例中从我的资源中启动一个文件是2.bat(批处理文件),但最初我想要一个.exe文件,但我发现它确实很复杂,因为它看起来像20行我无法清楚地清楚了解发生了什么. 如果我被迫仅通过资源进行此操作,请用以下资源位置" namespaceName.properties.resources.file "以示例为例. 我已经看到了资源示例,但看起来像是15行 代码它应该有点疯狂,以便每个代码适用于所有这些代码 我要与主程序合并的单个文件(例如1 + 15 对于第二个),如果您以某种方式知道完成我
4 2024-04-26
编程技术问答社区
使用C#,如何访问一个资源文件(.resx)并从添加到它的文本文件中读取?
我已经在我的项目中添加了一个资源文件,称为crpresource.resx. 然后,将文本文件添加到资源文件后,我想访问它并通过代码从中读取. 请任何建议. 解决方案 @brij提供了答案的核心. 但是,这里的困难是知道资源名称是什么 - 嵌入文件作为资源以符合其完全合格的名称后并不总是那么容易. 找到一个简单的方法是临时添加此行中: string[] names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 然后运行该程序,您可以在调试器中查看所有可用资源的"名称"列表. 其他解决方案 _assembly = Assembly.GetExecutingAssembly(); _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFil
24 2024-04-26
编程技术问答社区
在C#中提取嵌入式资源
我的C#可执行文件中有四个资源文件,1个Python脚本和3个Perl脚本.我可以成功提取所有三个perl脚本.但是我无法提取Python脚本.我尝试了很多方法.有人可以看看吗?谢谢. public static string ExtractResource(string resourceName) { string destFile = ""; //look for the resource name foreach (string currentResource in System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames() ) if (currentResource.LastIndexOf(resourceName) != -1) { string subPath = Common_Utilities
10 2024-04-26
编程技术问答社区
播放嵌入式资源MP3文件
我正在尝试播放一个MP3文件,该文件已嵌入我的C#应用​​程序(WinForms)中,但没有结果.我不想从资源创建文件并播放它.我已经搜索了互联网,但还没有找到任何工作示例.他们所有人都从资源创建文件并保存文件,然后将文件路径传递给MCI或WMP.可以通过流吗? public partial class Form1 : Form { [DllImport("winmm.dll")] private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback); public Form1() { InitializeComponent(); Stream fileStream = Assembly.GetExecutingAssembly
12 2024-04-25
编程技术问答社区
从流中创建图像或位图的无效参数 c# XP only
我相信我正在做的是非常标准的.我通过在资源上调用getManifestResourcestream从嵌入式资源中创建一些图像,从而使其成为.ICO文件的路径: Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("MeterView.Resources.unlocked.ico")); 然后使用位图在我的表单上显示图像.这总是在Windows 7和8上完美效果,但是现在,当我尝试在XP SP3框上运行该应用程序时,我在将流转换为位图的行上获得了"无效参数".我还尝试使用image.fromstream,但结果相同. 资源上的构建操作设置为嵌入资源.有人有任何想法,我如何解决这个问题?我还尝试重置流,这也没有区别. 事先感谢您的任何建议. 图标文件来自此应用程序的原始版本,该版本是在Visual Basic中为XP编写的.我相信它们是在VB中手动产生的.我已经
18 2024-04-25
编程技术问答社区
C#嵌入图像、报告、模式
我已经看到了一些示例,但是试图更好地了解"资源"文件的工作方式,例如嵌入图像,报告,模式等. 如果构建应用程序,我想确保部署时所有内容都可用,但是对于报告和图案之类的内容,我不希望任何人不小心删除,重命名或以其他方式处理事物的内容.因此,嵌入这些类型的项目似乎很有意义.然后,我只是通过资源管理器通过DLL访问. 由于我尚未做到这一点...我是正确的,因为我最终部署的东西将是一堆DLL,并且我可以检查以确保在继续应用程序之前所需的所有必需品.然后,我可以从"资源" DLL组装中获得所有报告和模式. 此外,由于我已经有一些大约5个报告的示例及其不在"资源"文件中的相应模式,因此将这些现有元素添加到"资源"文件中并能够运行它们涉及的内容.我知道他们似乎都有一些嵌入式的路径本身,例如报告知道其模式的来自哪里.如果实际文件不是部署的一部分,而只是从"资源"中提取,它会cho缩吗? 希望这一切都是有道理的,因为使用资源文件对我来说是相对较新的. 谢谢 解决方案
8 2024-04-24
编程技术问答社区
读取嵌入式资源到字节数组时出错(C#)
我有一个名为" test.exe"的嵌入式资源.我想做以下操作: 将test.exe的内容读取到字节数组中. 将test.exe的内容(现在在字节数组中)写到新位置(C:\ test.exe). 我正在使用以下代码(在此站点上找到) - 但问题在于" S"总是返回零值.我使用以下代码:byte[] b = ReadResource("Test.exe"); public static byte[] ReadResource(string resourceName) { using (Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { byte[] buffer = new byte[1024]; using (MemoryStream ms = new MemoryStream()) {
10 2024-04-24
编程技术问答社区
C#: 在没有临时文件的情况下将嵌入的swf加载到flash activex中
我的项目要求我的最终申请完全自我包含在一个EXE中.我已经使用ilmerge(可靠合并实用程序)将可执行文件和DLL组合在一起.我在C#应用程序中托管了Flash Active X Controtion,并且我嵌入了我需要将一个SWF加载到Flash控件中,以作为嵌入式资源. 这个问题显示了如何将资源写入临时文件,但是为我的情况创建临时文件是不可取的.这会产生问题,因为活动X Control LoadMovie方法仅接受指向要加载的文件的字符串. 我的问题是:是否可以在不创建临时文件的情况下将嵌入的SWF资源动态加载到Flash Active X控件中? 解决方案 我最终使用的解决方案是将所有必需的SWF文件包装到包装库中的所有必需的SWF文件. 然后,我将ActiveX控件的电影属性设置为包装器SWF,然后将ActiveX控件上的嵌入式标志设置为true.这将SWF直接嵌入到ActiveX控件中.我从来没有在C#中进行任何加载,而是在Active X控件上调用
24 2024-04-23
编程技术问答社区
如何从C#嵌入式资源中获取文件夹名称?
我想按文件系统订购的方式订购资源.我不能做一个字符串.在名称上放置,因为文件夹被'.字符,而不是" \"字符.这意味着在文件夹或文件名中有任何周期都会破坏排序. 是否有任何方法可以更改分离器角色,或者有嵌入式资源的原始位置的不同故障? 解决方案 这将为您提供所有资源的字符串数组. System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
12 2024-04-23
编程技术问答社区
为什么没有一种方法可以告诉编译器直接读取嵌入式资源的内容作为执行脚本?
来自 资源管理器旨在用于存储应用程序中嵌入的资源(例如图像,字符串或其他数据),而不是运行外部程序或脚本. 我了解它的目的是存储,但是为什么不允许运行脚本呢?也许外部程序可能很大,但我想脚本足够小? 解决方案 这不是"为什么不允许这样做?"的问题,而是"为什么未实现此功能?"的问题,哪个是非常不同的. 从您的其他问题的结果中,您可以看到可以将嵌入式资源的内容复制到本地文件,然后调用Process.Start以执行它.这与您要求的功能相同,因此可以执行嵌入式资源 ,但是您必须做一些腿部工作才能使其按照您想要的方式工作. 我不知道MS如何确定添加了.NET的功能,但是我认为此功能无法直接从嵌入式资源中获得,这是因为以下原因的某种组合: 这不是为 设计的嵌入式资源 如果您需要这样做,仍然可以自己实施(根据您的其他问题) 鼓励开发人员以嵌入式资源的方式存储和运行可执行文件,这听起来像是从设计角度来看的安全性头痛 对它的需求不多 他们从未考虑过
22 2024-04-22
编程技术问答社区
从嵌入式文本文件中使用File.ReadAllLines
我一直在应用迄今为止在鲍勃·塔博尔(Bob Tabors)绝对初学者系列中学到的知识,我为女儿写了一个小型游戏机文字游戏,要求我生成一个随机的5个字母单词. i先前使用File.ReadAllLines(path)在我的系统上从文本文件(WordList.txt)生成字符串数组,Random.next生成了我将从数组中提取的索引. 我从这里的一些帖子中学到了如何将文件嵌入为资源,但是现在我找不到指向它的语法(路径).还是现在嵌入了它,我必须以不同的方式访问它? 预先感谢 解决方案 没有好, minimal ,完整 CODE 代码示例不可能提供具体建议. 但是,基本问题是:当您嵌入文件作为资源时,它不再是文件.也就是说,原始文件仍然存在,但是资源本身并不是任何方式.它作为组装中的某种特定数据存储;从文件源嵌入的资源通常以二进制数据对象而最终形成. 如何使用此数据取决于"嵌入"的含义.实际上,有两种常见的方法将资源存储在C#程序中:您可以在项目中使用"资
22 2024-04-22
编程技术问答社区
嵌入.dlls | C#中的汇编解析
我有一个.dll,我正在尝试将其作为可执行文件中的资源嵌入.以下两个问题有些有用,但并不是一个完整的帮助: 嵌入另一个组件内的集会 这似乎没有写作. args.name不能如书面使用,但是即使已修复,该程序仍然抱怨丢失的.dll,表明程序集未正确加载. 将dlls嵌入汇编的可执行文件 和: 的答案之一中的链接 但是,我的项目中没有" app.xaml*"文件 - 我不使用wpf;我正在为我的可执行文件使用winforms(由于可执行文件的性质,更改并不是一个选择). 因此,我正在寻找一组完整的指令,以将类库嵌入可执行文件中的compucy并从资源中加载.dll,而无需在嵌入式资源之外使用.dll文件. 例如,简单地将" app.xaml"文件添加到winforms项目,还是我不知道的负面交互是可行的吗? 谢谢. 编辑:这是我目前正在使用的: /// /// Stores the very few things
8 2024-04-21
编程技术问答社区
使用嵌入式资源打开Excel工作簿文件
我正在使用Microsoft Office Interop打开Excel文件.该文件放置在一个特殊文件夹中,该文件夹中的工作簿代码读取文件.现在,要求是可以将Excel文件放置在任何地方.我相信最好的方法是将Excel文件作为嵌入式资源附加.但是,如果我作为嵌入式资源附加,我将如何使用Excel Workbook读取文件. _excelapplication.Workbooks.Open(Filename: pExcelTemplatePath); 无论文件的位置如何,读取Excel模板文件的最佳方法是什么? 解决方案 您不能直接从嵌入式资源中打开它 - 至少不是Interop ... 您将需要将其保存在某个地方 - 即首先从资源中读取它(例如Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceNameOfEmbeddedExcelFile)),然后将该流写入某些位置,例如另一个选项是
12 2024-04-21
编程技术问答社区
为MVC生成Resx文件
我们将RESX文件用于全球化,以及我们的CS员工可以配置的内容(例如Tab名称,可以通过产品不同)的数据库查找,因此在Design Time中不知道. 我创建了一个自定义工具,该工具读取RESX文件,并智能地将密钥/值对插入关系数据库(匹配值,因此我们没有重复). 这对我们的业务有很大的帮助 - 我们不必发送每个resx进行翻译(并为共享单词的重复翻译付费),并且我们具有所有翻译的"黄金标准"(在数据库中). 我创建的工具还读取数据库,拾取键/值对和每个值的翻译,并为每个resx文件(以及每种语言的文本文件的翻译)创建文本文件,并自动运行运行resgen.exe.exe. ,一种使用Visual Studio发货的命令行工具,用于从生成的文本文件中编译RESX文件. 我没有任何源控制集成,因此我们必须在使用该工具时手动查看RESX文件并手动检查生成的文件,但这不是一个大问题. 我的问题是,对于我们的新MVC项目,此方法正在失败:MVC项目要求使用" public
8 2024-04-20
编程技术问答社区
从嵌入式资源创建图像
这在过去的两天中一直使我发疯,而我发现的任何东西似乎都没有用,也许有人可以指出我在做错了什么. 我有一个WPF项目,我在其中包含大量图像(80ish).我已经将它们添加到一个名为"图像"的文件夹中.目前,它们被设置为嵌入资源(尽管我也尝试过常规资源),但似乎没有任何作用. 我正在尝试使用这些文件作为源来创建和加载类型映像的阵列列表,但我的失败很糟糕. private void addPicture(string name) { string filePath = "pack://MyApp_WPF:,,,/Images/" + name + ".png"; Stream imageStream = assembly.GetManifestResourceStream(filePath); Image curImage = new Image(); BitmapImage bmpImage = new Bitmap
28 2024-04-20
编程技术问答社区
我可以从同一个解决方案中的不同项目访问另一个项目的嵌入式资源吗?
我有一个XML文件,该文件作为project_a中的嵌入式资源. 我想从project_b到参考project_a. (基本上是Project_B由单位测试组成,我用RESHARPER运行它们.) 当我在project_b上工作时,是否可以访问project_a的嵌入式资源? 或通常,我可以在同一解决方案中的另一个项目中访问另一个项目的嵌入式资源吗? 解决方案 是的,您可以.这是一个示例,如何在.NET Framework的System.dll中获得嵌入式资源System.Timers.Timer.bmp: using (Stream stream = typeof(System.Timers.Timer).Assembly. GetManifestResourceStream("System.Timers.Timer.bmp")) { using (Bitmap bitmap = new B
18 2024-04-20
编程技术问答社区
文件名中含有文化名称的汇编中的嵌入式资源将无法加载
我正在尝试将一些电子邮件模板嵌入类库中.这很好,直到我使用包含以下符号的文化名称的文件名:templatename.nl-nl.cshtml 该资源似乎没有可用. 示例代码: namespace ManifestResources { class Program { static void Main(string[] args) { var assembly = Assembly.GetExecutingAssembly(); // Works fine var mailTemplate = assembly.GetManifestResourceStream("ManifestResources.mailtemplate.cshtml"); // Not ok, localized mail template is null
8 2024-04-20
编程技术问答社区