一个关于Visual Studio 2008 SP1 (KB971092) 的系统补丁重复安装问题的解决方案:
出现该问题的原因是未安装 Visual C++,除了安装VC++,您可以按以下步骤解决该补丁更新问题。
1.)下载补丁包或直接从 \Windows\SoftwareDistribution\Download\Install 目录找。
2.)双击安装,记住释放文件的目录。出现提示“VC Libraries QFE Patch 不适用或被系统的其他条件阻止。有关详细信息,请单击以下链接。”时,不要关闭窗口。
3.)找到释放安装文件的临时文件夹,复制到桌面。
4.)现在可以关闭刚才的提示窗口了。
5.)找到“\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat”这个文件,添加 Everyone 的权限为可写。
6.)运行桌面文件夹内的 VS90SP1-KB971092-x86.msp 等待安装完成,完成时没有提示。
7.)更新成功!
在我们开发过程中,经常会复制一些代码,而Visual Studio会自动把这些代码的ID重新生成,常常导致我们还必须去修改回原ID
其实,Visual Studio是可以保留原始ID的。我们可以通过在Tools->Options->Text Editor->HTML->Miscellaneous中,把Auto ID elements on paste in Source View前面的勾去掉就可以。
如图所示
下载地址 ftp://xuexi:xuexi123456@218.246.23.98/VS2005.rar
新增地址 ftp://thc123_net:thc123_com@220.113.41.144/thcvs2005.rar
附上天轰穿主页:
微软下载中心:Microsoft Visual Studio International Pack
Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。
概述
- East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。
- Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。
- Japanese Text Alignment Library - 支持日文特有的一种对齐格式。
- Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控制的示例。
- Korean Auto Complete TextBox Control - 在文本框中支持韩文输入法的智能感知和输入自动完成。
- Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。
- Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支持简繁体中文之间的转换. 该组件还包含一个Visual Studio集成开发环境中的插件(Add-in)支持简繁体中文资源文件之间的转换。
说明
2. 运行所需组件的MSI文件安装该组件。
文件安装在X:\Program Files\Microsoft Visual Studio International Pack(Beta)\Simplified Chinese Pin-Yin Conversion Library下。
使用时,需要引用目录下的两个dll文件:ChnCharInfo.dll,ChnCharInfoResource.dll。
其中ChnCharInfo.dll包含应用的类Microsoft.International.Converters.PinYinConverter > ChineseChar
ChnCharInfoResource.dll只包含数据资源。
ChineseCharNew(Char) ChineseChar类的构造函数。
ChineseCharacter 获取这个汉字字符。
CompareStrokeNumber(Char) 将给出的字符和实例字符的笔画数进行比较。
GetCharCount(Int16) 检索具有指定笔画数的字符个数。
GetChars(String) 获取给定拼音的所有同音字。
GetChars(Int16) 检索具有指定笔画数的所有字符串。
GetHomophoneCount(String) 检索具有指定拼音的字符数。
GetStrokeNumber(Char) 检索指定字符的笔画数。
HasSound(String) 识别字符是否有指定的读音。
IsHomophone(Char) 识别给出的字符是否是实例字符的同音字。
IsHomophone(Char, Char) 识别给出的两个字符是否是同音字。
IsPolyphone 获取这个字符是否是多音字。
IsValidChar(Char) 识别给出的字符串是否是一个有效的汉字字符。
IsValidPinyin(String) 识别给出的拼音是否是一个有效的拼音字符串。
IsValidStrokeNumber(Int16) 识别给出的笔画数是否是一个有效的笔画数。
PinyinCount 获取这个字符的拼音个数。
Pinyins 获取这个字符的拼音。
StrokeNumber 获取这个字符的笔画数。
以下代码演示了返回给出字符的笔划数。
using Microsoft.International.Converters.PinYinConverter;
class Main
{
publicvoid Main()
{
object chineseChar = new ChineseChar("微");
Console.WriteLine("stroke number of 微 in Chinese is {0}.", chineseChar.StrokeNumber);
Console.WriteLine("{0} characters' pinyin is \\'wei1\\'.", chineseChar.GetHomophoneCount("wei1"));
if ((chineseChar.IsHomophone("微", "薇")))
{
Console.WriteLine("微 and 薇 have the same pinyin.");
}
}
}
// This code produces the following output.
// stroke number of 微 in Chinese is 13.
// 37 characters' pinyin is 'wei1'.
// 微 and 薇 have the same pinyin.
//
它也没有提供注音功能。象“乪”字,它提供了拼音:NANG2,可没提供注音:náng。这我觉得很奇怪了。
namespace LzmTW.Converters.PinYinConverter
{
partial class ChineseChar
{
private class Vowels
{
private static ReadOnlyCollection<string> gArray;
static Vowels()
{
string[] mArray = new string[] {"b", "p", "m", "f", "d", "t", "n", "l", "g", "k",
"h", "j", "q", "x", "zh", "ch", "sh", "r", "z", "c",
"s", "y", "w"};
gArray =new ReadOnlyCollection<string>(mArray);
}
public static string Item {
get{
if (pinyin.Length ==1) {
return string.Empty;
}
string mVowel = pinyin.Substring(0, 2).ToLower;
if (gArray.Contains(mVowel))
return mVowel;
mVowel = mVowel.Substring(0, 1);
if (gArray.Contains(mVowel))
return mVowel;
return string.Empty;
}
}
}
}
}
namespace LzmTW.Converters.PinYinConverter
{
partial class ChineseChar
{
private class Consonants
{
private static ConsonantCollection gArray;
public static string Item {
get{
string mLastChar = yunmu.Substring(yunmu.Length -1, 1);
int mTone =-1;
string mConsonant = yunmu;
if (char.IsNumber((char)mLastChar)) {
mTone =int.Parse(mLastChar);
}
if (mTone >0) {
mConsonant = yunmu.Substring(0, yunmu.Length -1);
}
if (gArray.Contains(mConsonant)) {
switch (mTone) {
case0:
return gArray(mConsonant).tone1;
case1:
return gArray(mConsonant).tone2;
case2:
return gArray(mConsonant).tone3;
case3:
return gArray(mConsonant).tone4;
case4:
return gArray(mConsonant).tone5;
default:
return gArray(mConsonant).tone1;
}
}
return string.Empty;
}
}
static Consonants()
{
gArray =new ConsonantCollection();
//i,u,ü,iu
gArray.Add(ConsonantItem.Create(new string[] {"i", "i", "ī", "í", "ǐ", "ì"}));
gArray.Add(ConsonantItem.Create(new string[] {"u", "u", "ū", "ú", "ǔ", "ù"}));
gArray.Add(ConsonantItem.Create(new string[] {"v", "ü", "ǖ", "ǘ", "ǚ", "ǜ"}));
gArray.Add(ConsonantItem.Create(new string[] {"iu", "iu", "iū", "iú", "iǔ", "iù"}));
//ɑ,iɑ,uɑ
gArray.Add(ConsonantItem.Create(new string[] {"a", "a", "ā", "á", "ǎ", "à"}));
gArray.Add(ConsonantItem.Create(new string[] {"ia", "ia", "iā", "iá", "iǎ", "ià"}));
gArray.Add(ConsonantItem.Create(new string[] {"ua", "ua", "uā", "uá", "uǎ", "uà"}));
//o,uo
gArray.Add(ConsonantItem.Create(new string[] {"o", "o", "ō", "ó", "ǒ", "ò"}));
gArray.Add(ConsonantItem.Create(new string[] {"uo", "uo", "uō", "uó", "uǒ", "uò"}));
//e,ie,eü,er,ue,üe
gArray.Add(ConsonantItem.Create(new string[] {"e", "e", "ē", "é", "ě", "è"}));
gArray.Add(ConsonantItem.Create(new string[] {"ie", "ie", "iē", "ié", "iě", "iè"}));
gArray.Add(ConsonantItem.Create(new string[] {"er", "er", "ēr", "ér", "ěr", "èr"}));
gArray.Add(ConsonantItem.Create(new string[] {"ve", "üe", "ǖe", "ǘe", "ǚe", "ǜe"}));
gArray.Add(ConsonantItem.Create(new string[] {"ue", "üe", "ǖe", "ǘe", "ǚe", "ǜe"}));
//ɑi,uɑi
gArray.Add(ConsonantItem.Create(new string[] {"ai", "ai", "āi", "ái", "ǎi", "ài"}));
gArray.Add(ConsonantItem.Create(new string[] {"uai", "uai", "uāi", "uái", "uǎi", "uài"}));
//ei,uei(ui)
gArray.Add(ConsonantItem.Create(new string[] {"ei", "ei", "ēi", "éi", "ěi", "èi"}));
gArray.Add(ConsonantItem.Create(new string[] {"ui", "ui", "uī", "uí", "uǐ", "uì"}));
//ɑo,iɑo
gArray.Add(ConsonantItem.Create(new string[] {"ao", "ao", "āo", "áo", "ǎo", "ào"}));
gArray.Add(ConsonantItem.Create(new string[] {"iao", "iao", "iāo", "iáo", "iǎo", "iào"}));
//ou,iou
gArray.Add(ConsonantItem.Create(new string[] {"ou", "ou", "ōu", "óu", "ǒu", "òu"}));
//ɑn,iɑn
gArray.Add(ConsonantItem.Create(new string[] {"an", "an", "ān", "án", "ǎn", "àn"}));
gArray.Add(ConsonantItem.Create(new string[] {"ian", "ian", "iān", "ián", "iǎn", "iàn"}));
//uɑn,üɑn
gArray.Add(ConsonantItem.Create(new string[] {"uan", "uan", "uān", "uán", "uǎn", "uàn"}));
//en, uen(un)
gArray.Add(ConsonantItem.Create(new string[] {"en", "en", "ēn", "én", "ěn", "èn"}));
gArray.Add(ConsonantItem.Create(new string[] {"un", "un", "ūn", "ún", "ǔn", "ùn"}));
//in,ün
gArray.Add(ConsonantItem.Create(new string[] {"in", "in", "īn", "ín", "ǐn", "ìn"}));
gArray.Add(ConsonantItem.Create(new string[] {"vn", "ün", "ǖn", "ǘn", "ǚn", "ǜn"}));
//ɑnɡ,iɑnɡ,uɑnɡ
gArray.Add(ConsonantItem.Create(new string[] {"ang", "ang", "āng", "áng", "ǎng", "àng"}));
gArray.Add(ConsonantItem.Create(new string[] {"iang", "iang", "iāng", "iáng", "iǎng", "iàng"}));
gArray.Add(ConsonantItem.Create(new string[] {"uang", "uang", "uāng", "uáng", "uǎng", "uàng"}));
//enɡ,uenɡ
gArray.Add(ConsonantItem.Create(new string[] {"eng", "eng", "ēng", "éng", "ěng", "èng"}));
//inɡ
gArray.Add(ConsonantItem.Create(new string[] {"ing", "ing", "īng", "íng", "ǐng", "ìng"}));
//onɡ,ionɡ
gArray.Add(ConsonantItem.Create(new string[] {"ong", "ong", "ōng", "óng", "ǒng", "òng"}));
gArray.Add(ConsonantItem.Create(new string[] {"iong", "iong", "iōng", "ióng", "iǒng", "iòng"}));
}
private class ConsonantItem
{
public string tone0;
public string tone1;
public string tone2;
public string tone3;
public string tone4;
public string tone5;
public static ConsonantItem Create(string[] array)
{
ConsonantItem tmp =new ConsonantItem();
{
tmp.tone0 = array(0);
tmp.tone1 = array(1);
tmp.tone2 = array(2);
tmp.tone3 = array(3);
tmp.tone4 = array(4);
tmp.tone5 = array(5);
}
return tmp;
}
}
private class ConsonantCollection : KeyedCollection<string, ConsonantItem>
{
protected override string GetKeyForItem(ConsonantItem item)
{
return item.tone0;
}
}
}
}
}
PinyinConverter.cs
namespace LzmTW.Converters.PinYinConverter
{
public class ChineseChar : Microsoft.International.Converters.PinYinConverter.ChineseChar
{
private Collections.ObjectModel.ReadOnlyCollection<string> gZhuyins;
public ChineseChar(char ch) : base(ch)
{
string[] mZhuyinList =new string[8];
string mPinyin;
for (int i =0; i <= mZhuyinList.Length -1; i++) {
mPinyin =this.Pinyins(i);
if (!string.IsNullOrEmpty(mPinyin)) {
mZhuyinList(i) = ChineseChar.Zhuyin(mPinyin);
}
}
gZhuyins =new Collections.ObjectModel.ReadOnlyCollection<string>(mZhuyinList);
}
public Collections.ObjectModel.ReadOnlyCollection<string> Zhuyins {
get { return gZhuyins; }
}
private static string Zhuyin {
get {
pinyin = pinyin.Trim.ToLower;
string mVowel = Vowels.Item(pinyin);
string mYummu = pinyin;
if (!mVowel.Equals(string.Empty)) {
mYummu = mYummu.Substring(mVowel.Length);
}
string mConsonant = Consonants.Item(mYummu);
return string.Concat(mVowel, mConsonant);
}
}
/**////' <param name="pinyins">如 XIAN1 JIN4</param>
//Private Shared Function GetZhuyins(ByVal pinyins As String) As String
// Dim mList As New List(Of String)
// Dim mPinyin As String
// For Each pinyin As String In pinyins.Split(" "c)
// mPinyin = ChineseChar.Zhuyin(pinyin)
// If mPinyin.Equals(String.Empty) Then Continue For
// mList.Add(mPinyin)
// Next
// Return String.Join(" ", mList.ToArray)
//End Function
}
}
private void Button5_Click(object sender, System.EventArgs e)
{
LzmTW.Converters.PinYinConverter.ChineseChar t =new LzmTW.Converters.PinYinConverter.ChineseChar('和');
Console.WriteLine("\"和\"为多音字:");
for (int i =0; i <= t.PinyinCount -1; i++) {
Console.WriteLine("拼音:{0,-5},注音:{1}", t.Pinyins(i), t.Zhuyins(i));
}
}
"和"为多音字:
拼音:HE2 ,注音:hé
拼音:HE4 ,注音:hè
拼音:HE5 ,注音:he
拼音:HU2 ,注音:hú
拼音:HUO2 ,注音:huó
拼音:HUO4 ,注音:huò
拼音:HUO5 ,注音:huo
安装ASP.NET AJAX
安装Toolkit:
下载解压AjaxControlToolkit.zip移至
C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit
安装模板C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit\AjaxControlExtender\AjaxControlExtender.vsi
若安装失败,手工建立以下文件夹:
\My Documents\Visual Studio 2005\Templates\ItemTemplates\Visual C#
\My Documents\Visual Studio 2005\Templates\ItemTemplates\Visual Basic
\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual C#
\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Basic
把SampleWebSite\Bin下的AjaxControlToolkit.dll和AjaxControlToolkit.pdb
复制至Binaries下。
打开VS,添加选项卡AjaxControlToolkit,添加项浏览至Binaries\AjaxControlToolkit.dll