private void LoadMsAssembly(ScriptClass scriptClass)
{
_input.GetAttributes(_assemblyAttributes);
string name = ParseStringAttribute(0, "name");
string href = ParseStringAttribute(1, "href");
if ((name != null) == (href != null))
{
ReportError(/*[XT_046]*/SR.Xslt_AssemblyNameHref);
}
else
{
string asmLocation = null;
if (name != null)
{
try
{
AssemblyName asmName = new AssemblyName(name);
Assembly.Load(asmName);
asmLocation = asmName.Name + ".dll";
}
catch
{
AssemblyName asmName = new AssemblyName(name);
// If the assembly is simply named, let CodeDomProvider and Fusion resolve it
byte[] publicKeyToken = asmName.GetPublicKeyToken();
if ((publicKeyToken == null || publicKeyToken.Length == 0) && asmName.Version == null)
{
asmLocation = asmName.Name + ".dll";
}
else
{
throw;
}
}
}
else
{
Debug.Assert(href != null);
asmLocation = Assembly.LoadFrom(ResolveUri(href, _input.BaseUri).ToString()).Location;
scriptClass.refAssembliesByHref = true;
}
if (asmLocation != null)
{
scriptClass.refAssemblies.Add(asmLocation);
}
}
CheckNoContent();
}