惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
V
V2EX
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
F
Full Disclosure
Y
Y Combinator Blog
V
V2EX - 技术
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
SecWiki News
SecWiki News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
量子位
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
K
Kaspersky official blog
B
Blog
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
L
LangChain Blog
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
D
Docker
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - 东哥技术专栏 - Coldwine's Blog

SQL Server Transactional Replication 中的 CommitBatchSize 和 CommitBatchThreshold 属性 转: SQL Server Analysis Service中Cube的结构 Cannot connect to an Analysis Services named instance after installing SQL Server Express 今天遇到一个问题才知道如果安装了命名实例 SSIS Service 需要手动更改配置文件 Data Mining Tutorial数据挖掘教程 (PART-1) 一些关于“数据挖掘介”技术的有用文档 The Fundamentals of the SQL Server 2005 XML Datatype SSL协议与数字证书原理 (ZT) PKI 技术白皮书 (ZT) Windows 2000 公钥基础结构详解 (ZT) SQL Server 2000 之前的版本号对照表 关于 c# 的 Partial Class 关于ASP.NET CS1595 问题 开发人员的十种必备工具 ASP.NET中的状态管理 ASP.NET中编程杀死进程 关于SqlDataReader一些用法 使用C#建立WINDOWS服务 . Net环境下消息队列(MSMQ)对象的应用
使用附属程序集的一些经验
东哥技术专栏 - Coldwine's Blog · 2005-08-01 · via 博客园 - 东哥技术专栏 - Coldwine's Blog

使用.NET进行编程时,当需要创建多语言的应用程序,并且使应用程序具有更新语言包的功能,就需要用到附属程序集。用附属程序集功能来部署应用程序的资源与以往资源文件的使用方式大不相同,现将学习过程中遇到的问题和经验总结如下:

一 步骤

(1)建立应用程序取名假设为YOURAPP。

(2)在解决方案内添加项目,选择新建项目,选择VC++项目,选择空项目(.net),名字取名为Resource目录指定为YOURAPP目录。项目生成后删除Resource项目中的所有项。并设置项目属性的配置类型为实用工具。

(3)在新生成的resource目录中放置制作好的资源文件,或者可以使用RESGEN.EXE从现有的文本文件或者位图等文件生成资源文件,注意,生成的资源文件用*.resources扩展名存储,取名规则为:假设默认区域资源为abc.resources 则 不同区域的资源文件为 abc.区域名称.resources 比如中国:abc.zh-CN.resources

(4)将制作好的一系列资源文件添加到resource空项目中,并到YOURAPP项目中 使用解决方案资源管理引入abc.resources文件,显示所有文件,在目标文件上右键选择,包括在项目中。注意只需要引入这一个文件。这里的意图实际上等同于下列命令行:

csc.exe /out:bin\Debug\YOURAPP.exe 
/res:Resources\abc.resources,YOURAPP.Resources.abc.resources Form1.cs AssemblyInfo.cs

给应用程序设置默认资源的一个关联。

(5)右键点击resources项目中的资源文件选择属性,点击自定义生成步骤,命令行中填入如下命令,不要写在一行:

mkdir "$(ProjectDir)\..\bin\$(IntDir)\en"<回车>
al.exe /culture:en /out:"$(ProjectDir)\..\bin\$(IntDir)\en\YOURAPP.resources.dll" /embed:"$(InputPath)","YOURAPP.Resources.$(InputFileName)"
/template:"$(ProjectDir)\..\obj\$(IntDir)\YOURAPP.exe"

输出中填入如下命令:$(ProjectDir)\..\bin\$(IntDir)\en\YOURAPP.resources.dll

输出中填入如下命令:$(ProjectDir)\..\bin\$(IntDir)\en\YOURAPP.resources.dll

注意:

a.上面所有提到en的地方需要用相应的区域名称替换,注意默认的资源文件不需要做此设置。

b.这里使用的路径宏定义,可能会跟你的机器稍有不同,填写时对照你的宏来填写。

(6)设置好命令之后右键点击资源文件会有编译按钮,点击后应该在DEBUG(或者RELEASE)中生成/BIN/debug/en/YOURAPP.resources.dll每个区域目录中有同样文件。

(7)现在可以开始调用了,调用可使用如下代码实现:

System.Resources.ResourceManager rm=new System.Resources.ResourceManager
("YOURAPP.Resources.abc",System.Reflection.Assembly.GetExecutingAssembly ());

textBox1.Text=rm.GetString ("str1");

至此就完成了附属程序集的建立工作,当然也可以使用全命令行的方式来操作。

二 注意事项

1。使用resources作为目录以及VC++项目名称,似乎这个名称是一个固定引用名称

2。附属程序集中的资源与程序集中的不同区域的资源有冲突,假设你的FORM1有一个FORM1.EN.RESX文件,那么当你使用附属程序集时EN区域的资源将无法正确取得,所以你需要将自动生成的区域资源删除。

3。一定要设置默认资源文件和YOURAPP的关联

4。当需要添加新的区域设置时,只要建立区域名称的目录,拷贝DLL即可。因此可以发布程序后再分发语言包。