我需要在不使用 AssemblyName 的情况下解析程序集限定名称,因为我得到 System.IO.FileLoadException(程序集不可用)。

我只管理字符串而不是程序集。如果我有一个字符串,我想为 asm1 和 asm2 字符串变量获取如下字符串。



任何建议,示例代码?

var asm1 = "CalidadCodigo.ParserSQL.Reglas.AnalisisSintactico,CalidadCodigo.ParserSQL.AnalisisSintactico, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9744987c0853bf9e";


var asm2 = "CalidadCodigo.ParserSQL.Reglas.AnalisisSintactico,                CalidadCodigo.ParserSQL.AnalisisSintactico          , Version=1.0.0.0     , Culture=neutral,    PublicKeyToken=9744987c0853bf9e              ";

最佳答案

你可以用逗号分割,修剪字符串,然后检查每个部分的预期前缀吗?

List<string> parts = name.Split(',')
                         .Select(x => x.Trim())
                         .ToList();

string name = parts[0];
string assembly = parts.Count < 2 ? null : parts[1];
string version = parts.Count < 3 ? null : parts[2];
string culture = parts.Count < 4 ? null : parts[3];
string token = parts.Count < 5 ? null : parts[4];

if (version != null && !version.StartsWith("Version="))
{
    throw new ArgumentException("Invalid version: " + version);
}
// etc

关于c# - 不使用 AssemblyName 解析程序集限定名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4085613/

10-12 17:54