Bug fixes

This commit is contained in:
Razmoth
2023-06-17 16:09:15 +04:00
parent f65451da33
commit e608a119ca
5 changed files with 240 additions and 90 deletions

View File

@@ -45,7 +45,10 @@ namespace AssetStudioGUI
optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
displayAll = new System.Windows.Forms.ToolStripMenuItem();
enablePreview = new System.Windows.Forms.ToolStripMenuItem();
enableModelPreview = new System.Windows.Forms.ToolStripMenuItem();
modelsOnly = new System.Windows.Forms.ToolStripMenuItem();
enableResolveDependencies = new System.Windows.Forms.ToolStripMenuItem();
skipContainer = new System.Windows.Forms.ToolStripMenuItem();
displayInfo = new System.Windows.Forms.ToolStripMenuItem();
toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox();
@@ -161,7 +164,9 @@ namespace AssetStudioGUI
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
enableModelPreview = new System.Windows.Forms.ToolStripMenuItem();
toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
splitContainer1.Panel1.SuspendLayout();
@@ -253,7 +258,7 @@ namespace AssetStudioGUI
//
// optionsToolStripMenuItem
//
optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, enablePreview, enableModelPreview, modelsOnly, displayInfo, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt });
optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, toolStripSeparator10, enablePreview, enableModelPreview, modelsOnly, toolStripSeparator11, displayInfo, enableResolveDependencies, skipContainer, toolStripSeparator12, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt });
optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
optionsToolStripMenuItem.Text = "Options";
@@ -262,7 +267,7 @@ namespace AssetStudioGUI
//
displayAll.CheckOnClick = true;
displayAll.Name = "displayAll";
displayAll.Size = new System.Drawing.Size(207, 22);
displayAll.Size = new System.Drawing.Size(225, 22);
displayAll.Text = "Display all assets";
displayAll.ToolTipText = "Check this option will display all types assets. Not extractable assets can export the RAW file.";
displayAll.CheckedChanged += displayAll_CheckedChanged;
@@ -273,26 +278,55 @@ namespace AssetStudioGUI
enablePreview.CheckOnClick = true;
enablePreview.CheckState = System.Windows.Forms.CheckState.Checked;
enablePreview.Name = "enablePreview";
enablePreview.Size = new System.Drawing.Size(207, 22);
enablePreview.Size = new System.Drawing.Size(225, 22);
enablePreview.Text = "Enable preview";
enablePreview.ToolTipText = "Toggle the loading and preview of readable assets, such as images, sounds, text, etc.\r\nDisable preview if you have performance or compatibility issues.";
enablePreview.CheckedChanged += enablePreview_Check;
//
// enableModelPreview
//
enableModelPreview.CheckOnClick = true;
enableModelPreview.Name = "enableModelPreview";
enableModelPreview.Size = new System.Drawing.Size(225, 22);
enableModelPreview.Text = "Enable model preview";
enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged;
//
// modelsOnly
//
modelsOnly.CheckOnClick = true;
modelsOnly.Name = "modelsOnly";
modelsOnly.Size = new System.Drawing.Size(207, 22);
modelsOnly.Size = new System.Drawing.Size(225, 22);
modelsOnly.Text = "Filter models only";
modelsOnly.CheckedChanged += modelsOnly_CheckedChanged;
//
// enableResolveDependencies
//
enableResolveDependencies.Checked = true;
enableResolveDependencies.CheckOnClick = true;
enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked;
enableResolveDependencies.Name = "enableResolveDependencies";
enableResolveDependencies.Size = new System.Drawing.Size(225, 22);
enableResolveDependencies.Text = "Enable resolve dependencies";
enableResolveDependencies.ToolTipText = "Toggle the behaviour of loading assets.\r\nDisable to load file(s) without its dependencies.";
enableResolveDependencies.CheckedChanged += enableResolveDependencies_CheckedChanged;
//
// skipContainer
//
skipContainer.CheckOnClick = true;
skipContainer.Name = "skipContainer";
skipContainer.Size = new System.Drawing.Size(225, 22);
skipContainer.Text = "Skip container recovery";
skipContainer.ToolTipText = "Skips the container recovery step.\nImproves loading when dealing with a large num" +
"ber of files.";
skipContainer.CheckedChanged += skipContainer_CheckedChanged;
//
// displayInfo
//
displayInfo.Checked = true;
displayInfo.CheckOnClick = true;
displayInfo.CheckState = System.Windows.Forms.CheckState.Checked;
displayInfo.Name = "displayInfo";
displayInfo.Size = new System.Drawing.Size(207, 22);
displayInfo.Size = new System.Drawing.Size(225, 22);
displayInfo.Text = "Display asset information";
displayInfo.ToolTipText = "Toggle the overlay that shows information about each asset, eg. image size, format, audio bitrate, etc.";
displayInfo.CheckedChanged += displayAssetInfo_Check;
@@ -301,7 +335,7 @@ namespace AssetStudioGUI
//
toolStripMenuItem14.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyUnityVersion });
toolStripMenuItem14.Name = "toolStripMenuItem14";
toolStripMenuItem14.Size = new System.Drawing.Size(207, 22);
toolStripMenuItem14.Size = new System.Drawing.Size(225, 22);
toolStripMenuItem14.Text = "Specify Unity version";
//
// specifyUnityVersion
@@ -314,7 +348,7 @@ namespace AssetStudioGUI
//
toolStripMenuItem18.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyGame });
toolStripMenuItem18.Name = "toolStripMenuItem18";
toolStripMenuItem18.Size = new System.Drawing.Size(207, 22);
toolStripMenuItem18.Size = new System.Drawing.Size(225, 22);
toolStripMenuItem18.Text = "Specify Game";
//
// specifyGame
@@ -327,7 +361,7 @@ namespace AssetStudioGUI
//
toolStripMenuItem19.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyAIVersion });
toolStripMenuItem19.Name = "toolStripMenuItem19";
toolStripMenuItem19.Size = new System.Drawing.Size(207, 22);
toolStripMenuItem19.Size = new System.Drawing.Size(225, 22);
toolStripMenuItem19.Text = "Specify AI version";
toolStripMenuItem19.DropDownOpening += toolStripMenuItem19_DropDownOpening;
//
@@ -341,7 +375,7 @@ namespace AssetStudioGUI
// showExpOpt
//
showExpOpt.Name = "showExpOpt";
showExpOpt.Size = new System.Drawing.Size(207, 22);
showExpOpt.Size = new System.Drawing.Size(225, 22);
showExpOpt.Text = "Export options";
showExpOpt.Click += showExpOpt_Click;
//
@@ -1258,13 +1292,20 @@ namespace AssetStudioGUI
showOriginalFileToolStripMenuItem.Visible = false;
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
//
// enableModelPreview
// toolStripSeparator10
//
enableModelPreview.CheckOnClick = true;
enableModelPreview.Name = "enableModelPreview";
enableModelPreview.Size = new System.Drawing.Size(207, 22);
enableModelPreview.Text = "Enable model preview";
enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged;
toolStripSeparator10.Name = "toolStripSeparator10";
toolStripSeparator10.Size = new System.Drawing.Size(222, 6);
//
// toolStripSeparator11
//
toolStripSeparator11.Name = "toolStripSeparator11";
toolStripSeparator11.Size = new System.Drawing.Size(222, 6);
//
// toolStripSeparator12
//
toolStripSeparator12.Name = "toolStripSeparator12";
toolStripSeparator12.Size = new System.Drawing.Size(222, 6);
//
// AssetStudioGUIForm
//
@@ -1445,6 +1486,11 @@ namespace AssetStudioGUI
private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitSelectedAnimationClipsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem modelsOnly;
private System.Windows.Forms.ToolStripMenuItem enableModelPreview;
private System.Windows.Forms.ToolStripMenuItem enableResolveDependencies;
private System.Windows.Forms.ToolStripMenuItem skipContainer;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
}
}

View File

@@ -110,7 +110,10 @@ namespace AssetStudioGUI
enablePreview.Checked = Properties.Settings.Default.enablePreview;
enableModelPreview.Checked = Properties.Settings.Default.enableModelPreview;
modelsOnly.Checked = Properties.Settings.Default.modelsOnly;
assetsManager.ResolveDependencies = Properties.Settings.Default.enableResolveDependencies;
enableResolveDependencies.Checked = Properties.Settings.Default.enableResolveDependencies;
skipContainer.Checked = Properties.Settings.Default.skipContainer;
assetsManager.ResolveDependencies = enableResolveDependencies.Checked;
SkipContainer = Properties.Settings.Default.skipContainer;
MiHoYoBinData.Encrypted = Properties.Settings.Default.encrypted;
MiHoYoBinData.Key = Properties.Settings.Default.key;
AssetsHelper.Minimal = Properties.Settings.Default.minimalAssetMap;
@@ -174,23 +177,23 @@ namespace AssetStudioGUI
public async void LoadPaths(params string[] paths)
{
ResetForm();
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
assetsManager.Game = Studio.Game;
if (paths.Length == 1 && Directory.Exists(paths[0]))
{
await Task.Run(() => assetsManager.LoadFolder(paths[0]));
}
else
{
if (paths.Length == 1 && File.Exists(paths[0]) && Path.GetExtension(paths[0]) == ".txt")
{
paths = File.ReadAllLines(paths[0]);
}
await Task.Run(() => assetsManager.LoadFiles(paths));
}
BuildAssetStructures();
ResetForm();
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
assetsManager.Game = Studio.Game;
if (paths.Length == 1 && Directory.Exists(paths[0]))
{
await Task.Run(() => assetsManager.LoadFolder(paths[0]));
}
else
{
if (paths.Length == 1 && File.Exists(paths[0]) && Path.GetExtension(paths[0]) == ".txt")
{
paths = File.ReadAllLines(paths[0]);
}
await Task.Run(() => assetsManager.LoadFiles(paths));
}
BuildAssetStructures();
}
private async void loadFile_Click(object sender, EventArgs e)
{
@@ -1243,15 +1246,15 @@ namespace AssetStudioGUI
{
var model = new ModelConverter(m_GameObject, Properties.Settings.Default.convertType, Studio.Game, false, Array.Empty<AnimationClip>());
PreviewModel(model);
}
}
private void PreviewAnimator(Animator m_Animator)
{
{
var model = new ModelConverter(m_Animator, Properties.Settings.Default.convertType, Studio.Game, false, Array.Empty<AnimationClip>());
PreviewModel(model);
}
}
private void PreviewModel(ModelConverter model)
{
{
if (model.MeshList.Count > 0)
{
viewMatrixData = Matrix4.CreateRotationY(-(float)Math.PI / 4) * Matrix4.CreateRotationX(-(float)Math.PI / 6);
@@ -1754,7 +1757,7 @@ namespace AssetStudioGUI
if (Properties.Settings.Default.modelsOnly)
{
var models = visibleAssets.FindAll(x => x.Type == ClassIDType.Animator || x.Type == ClassIDType.GameObject);
foreach(var model in models)
foreach (var model in models)
{
var hasModel = model.Asset switch
{
@@ -1872,7 +1875,7 @@ namespace AssetStudioGUI
{
return;
}
if (Properties.Settings.Default.skipContainer)
if (skipContainer.Checked)
{
Logger.Info("Skip container is enabled, aborting...");
return;
@@ -1962,6 +1965,21 @@ namespace AssetStudioGUI
dumpTextBox.Text = DumpAsset(lastSelectedItem.Asset);
}
}
private void enableResolveDependencies_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.enableResolveDependencies = enableResolveDependencies.Checked;
Properties.Settings.Default.Save();
assetsManager.ResolveDependencies = enableResolveDependencies.Checked;
}
private void skipContainer_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.skipContainer = skipContainer.Checked;
Properties.Settings.Default.Save();
SkipContainer = skipContainer.Checked;
}
private void assetMapTypeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
Properties.Settings.Default.selectedAssetMapType = assetMapTypeComboBox.SelectedIndex;
@@ -2169,7 +2187,7 @@ namespace AssetStudioGUI
{
ResetForm();
AssetsHelper.Clear();
assetBrowser.Clear();
assetBrowser?.Clear();
assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text;
assetsManager.Game = Studio.Game;
}
@@ -2201,7 +2219,7 @@ namespace AssetStudioGUI
private async void loadAIToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Properties.Settings.Default.skipContainer)
if (skipContainer.Checked)
{
Logger.Info("Skip container is enabled, aborting...");
return;

View File

@@ -1,4 +1,64 @@
<root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">

View File

@@ -71,13 +71,11 @@ namespace AssetStudioGUI
key = new System.Windows.Forms.NumericUpDown();
keyToolTip = new System.Windows.Forms.ToolTip(components);
groupBox4 = new System.Windows.Forms.GroupBox();
minimalAssetMap = new System.Windows.Forms.CheckBox();
disableShader = new System.Windows.Forms.CheckBox();
disableRenderer = new System.Windows.Forms.CheckBox();
skipContainer = new System.Windows.Forms.CheckBox();
enableResolveDependencies = new System.Windows.Forms.CheckBox();
resolveToolTip = new System.Windows.Forms.ToolTip(components);
skipToolTip = new System.Windows.Forms.ToolTip(components);
minimalAssetMap = new System.Windows.Forms.CheckBox();
groupBox1.SuspendLayout();
panel1.SuspendLayout();
groupBox2.SuspendLayout();
@@ -541,10 +539,8 @@ namespace AssetStudioGUI
groupBox4.Controls.Add(minimalAssetMap);
groupBox4.Controls.Add(disableShader);
groupBox4.Controls.Add(disableRenderer);
groupBox4.Controls.Add(skipContainer);
groupBox4.Controls.Add(key);
groupBox4.Controls.Add(encrypted);
groupBox4.Controls.Add(enableResolveDependencies);
groupBox4.Location = new System.Drawing.Point(13, 258);
groupBox4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
groupBox4.Name = "groupBox4";
@@ -554,10 +550,20 @@ namespace AssetStudioGUI
groupBox4.TabStop = false;
groupBox4.Text = "Options";
//
// minimalAssetMap
//
minimalAssetMap.AutoSize = true;
minimalAssetMap.Location = new System.Drawing.Point(8, 97);
minimalAssetMap.Name = "minimalAssetMap";
minimalAssetMap.Size = new System.Drawing.Size(125, 19);
minimalAssetMap.TabIndex = 17;
minimalAssetMap.Text = "Minimal AssetMap";
minimalAssetMap.UseVisualStyleBackColor = true;
//
// disableShader
//
disableShader.AutoSize = true;
disableShader.Location = new System.Drawing.Point(8, 121);
disableShader.Location = new System.Drawing.Point(8, 72);
disableShader.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
disableShader.Name = "disableShader";
disableShader.Size = new System.Drawing.Size(103, 19);
@@ -569,7 +575,7 @@ namespace AssetStudioGUI
// disableRenderer
//
disableRenderer.AutoSize = true;
disableRenderer.Location = new System.Drawing.Point(8, 96);
disableRenderer.Location = new System.Drawing.Point(8, 47);
disableRenderer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
disableRenderer.Name = "disableRenderer";
disableRenderer.Size = new System.Drawing.Size(114, 19);
@@ -578,44 +584,6 @@ namespace AssetStudioGUI
skipToolTip.SetToolTip(disableRenderer, "Skips the container recovery step.\nImproves loading when dealing with a large number of files.");
disableRenderer.UseVisualStyleBackColor = true;
//
// skipContainer
//
skipContainer.AutoSize = true;
skipContainer.Checked = true;
skipContainer.CheckState = System.Windows.Forms.CheckState.Checked;
skipContainer.Location = new System.Drawing.Point(8, 72);
skipContainer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
skipContainer.Name = "skipContainer";
skipContainer.Size = new System.Drawing.Size(149, 19);
skipContainer.TabIndex = 14;
skipContainer.Text = "Skip container recovery";
skipToolTip.SetToolTip(skipContainer, "Skips the container recovery step.\nImproves loading when dealing with a large number of files.");
skipContainer.UseVisualStyleBackColor = true;
//
// enableResolveDependencies
//
enableResolveDependencies.AutoSize = true;
enableResolveDependencies.Checked = true;
enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked;
enableResolveDependencies.Location = new System.Drawing.Point(8, 47);
enableResolveDependencies.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
enableResolveDependencies.Name = "enableResolveDependencies";
enableResolveDependencies.Size = new System.Drawing.Size(177, 19);
enableResolveDependencies.TabIndex = 13;
enableResolveDependencies.Text = "Enable resolve dependencies";
resolveToolTip.SetToolTip(enableResolveDependencies, "Toggle the behaviour of loading assets.\r\nDisable to load file(s) without its dependencies.");
enableResolveDependencies.UseVisualStyleBackColor = true;
//
// minimalAssetMap
//
minimalAssetMap.AutoSize = true;
minimalAssetMap.Location = new System.Drawing.Point(8, 146);
minimalAssetMap.Name = "minimalAssetMap";
minimalAssetMap.Size = new System.Drawing.Size(125, 19);
minimalAssetMap.TabIndex = 17;
minimalAssetMap.Text = "Minimal AssetMap";
minimalAssetMap.UseVisualStyleBackColor = true;
//
// ExportOptions
//
AcceptButton = OKbutton;
@@ -693,8 +661,6 @@ namespace AssetStudioGUI
private System.Windows.Forms.ToolTip keyToolTip;
private System.Windows.Forms.CheckBox exportUV0UV1;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.CheckBox enableResolveDependencies;
private System.Windows.Forms.CheckBox skipContainer;
private System.Windows.Forms.ToolTip resolveToolTip;
private System.Windows.Forms.ToolTip skipToolTip;
private System.Windows.Forms.CheckBox disableShader;

View File

@@ -1,4 +1,64 @@
<root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">