我有一个WPF程序集,我想在其中嵌入五个图标,用于与我的应用程序关联的不同文件类型.如何将这些图标嵌入我的EXE?
@smoore @Groky @ChrisF,谢谢.不幸的是,这不是我的要求.我看到我的问题非常模糊0_°.让我重新解释一下这个问题:
我的图标,说Application.ico,Document.ico等在我的WPF项目资源.我在大多数情况下使用以下方法访问这些图标:
<Image Source="/MyAssembly;component/Resources/Icons/Application.ico" />
Run Code Online (Sandbox Code Playgroud)
这每次都有效.我知道.
我的问题是如何在Windows资源管理器中使用相同的图标来获取注册表中的文件关联.我希望能够通过以下路径访问图标:
C:\Program Files\MyApp\MyApp.exe,1
Run Code Online (Sandbox Code Playgroud)
就像图标与文件类型的关联方式一样HKEY_CLASSES_ROOT.
AFAIK,我应该使用资源文件(.rc),编译并将其与我的EXE合并.有点像:
101 RT_ICON Application.ico
102 RT_ICON Document.ico
// etc...
Run Code Online (Sandbox Code Playgroud)
这是WPF中的正确方法吗?有没有替代方案,特别是因为这种方法似乎导致我的装配版本的擦除AssemblyInfo.cs.我仍然准备在资源中编写版本控制信息而不是程序集的信息.
我找到了一个解决方案!它并不完美,但它做到了我想要的!由于我在斯堪的纳维亚度过了漫长的夜晚来寻找解决方案,因此我觉得我必须在这里分享。
这就是我所做的:
1) 编写了一个愚蠢的控制台 C# 应用程序。
class ResTest {
static void Main() {
System.Console.WriteLine("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
2)做了一个简单的csc restest.cs测试我的代码是否有效。
3)打开记事本并在我命名的文件中写入以下内容App.rc。
101 ICON "Application.ico"
102 ICON "Document.ico"
103 ICON "Help.ico"
Run Code Online (Sandbox Code Playgroud)
4) Ran rc /v App.rc,资源编译器。一个新的文件,App.res出现了。
5)重新运行,csc但这一次:
csc /win32res:App.res restest.cs
Run Code Online (Sandbox Code Playgroud)
6)restest.exe现在有了 ID 为 101 的图标,我可以在 Axialis IconWorkshop 中找到另外两个图标。
现在,我注意到我的程序集信息(版本、产品名称、等等)消失了。我用谷歌搜索VS_VERSION_INFO并找到了 MSDN 的关于 VERSIONINFO 结构的文章,该结构在 RC 文件中定义了我需要的属性。
我更喜欢更“自动化”的方法,但我必须使用 C# Express 和 Windows Vista SDK 尽我所能。
——希望你能用这个...
| 归档时间: |
|
| 查看次数: |
5018 次 |
| 最近记录: |