本文整理汇总了C#中AssemblyName.SetPublicKey方法的典型用法代码示例。如果您正苦于以下问题:C# AssemblyName.SetPublicKey方法的具体用法?C# AssemblyName.SetPublicKey怎么用?C# AssemblyName.SetPublicKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AssemblyName
的用法示例。
在下文中一共展示了AssemblyName.SetPublicKey方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetNameImpl
private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
{
AssemblyName name = new AssemblyName();
name.Name = manifestModule.GetString(rec.Name);
name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
if (rec.PublicKey != 0)
{
name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
}
else
{
name.SetPublicKey(Empty<byte>.Array);
}
if (rec.Culture != 0)
{
name.Culture = manifestModule.GetString(rec.Culture);
}
else
{
name.Culture = "";
}
name.HashAlgorithm = (AssemblyHashAlgorithm)rec.HashAlgId;
name.CodeBase = this.CodeBase;
name.RawFlags = (AssemblyNameFlags)rec.Flags;
return name;
}
示例2: GetNameImpl
private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
{
AssemblyName name = new AssemblyName();
name.Name = manifestModule.GetString(rec.Name);
name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
if (rec.PublicKey != 0)
{
name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
}
else
{
name.SetPublicKey(Empty<byte>.Array);
}
if (rec.Culture != 0)
{
name.Culture = manifestModule.GetString(rec.Culture);
}
else
{
name.Culture = "";
}
name.HashAlgorithm = (AssemblyHashAlgorithm)rec.HashAlgId;
name.CodeBase = this.CodeBase;
PortableExecutableKinds peKind;
ImageFileMachine machine;
manifestModule.GetPEKind(out peKind, out machine);
switch (machine)
{
case ImageFileMachine.I386:
// FXBUG we copy the .NET bug that Preferred32Bit implies x86
if ((peKind & (PortableExecutableKinds.Required32Bit | PortableExecutableKinds.Preferred32Bit)) != 0)
{
name.ProcessorArchitecture = ProcessorArchitecture.X86;
}
else if ((rec.Flags & 0x70) == 0x70)
{
// it's a reference assembly
name.ProcessorArchitecture = ProcessorArchitecture.None;
}
else
{
name.ProcessorArchitecture = ProcessorArchitecture.MSIL;
}
break;
case ImageFileMachine.IA64:
name.ProcessorArchitecture = ProcessorArchitecture.IA64;
break;
case ImageFileMachine.AMD64:
name.ProcessorArchitecture = ProcessorArchitecture.Amd64;
break;
case ImageFileMachine.ARM:
name.ProcessorArchitecture = ProcessorArchitecture.Arm;
break;
}
name.RawFlags = (AssemblyNameFlags)rec.Flags;
return name;
}
示例3: Main
static void Main(string[] args)
{
Universe universe = new Universe();
AssemblyName name = new AssemblyName("System.Core");
name.Version = new Version(3, 5);
name.SetPublicKey(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
AssemblyBuilder ab = universe.DefineDynamicAssembly(name, AssemblyBuilderAccess.Save);
ModuleBuilder modb = ab.DefineDynamicModule("System.Core", "System.Core.dll");
TypeBuilder tb = modb.DefineType("System.Runtime.CompilerServices.ExtensionAttribute", TypeAttributes.Class | TypeAttributes.Public | TypeAttributes.Sealed, universe.Import(typeof(Attribute)));
tb.DefineDefaultConstructor(MethodAttributes.Public);
tb.CreateType();
ab.Save("System.Core.dll");
}
示例4: GetNameImpl
private AssemblyName GetNameImpl(ref AssemblyTable.Record rec)
{
AssemblyName name = new AssemblyName();
name.Name = manifestModule.GetString(rec.Name);
name.Version = new Version(rec.MajorVersion, rec.MinorVersion, rec.BuildNumber, rec.RevisionNumber);
if (rec.PublicKey != 0)
{
name.SetPublicKey(manifestModule.GetBlobCopy(rec.PublicKey));
}
else
{
name.SetPublicKey(Empty<byte>.Array);
}
if (rec.Culture != 0)
{
name.CultureInfo = new System.Globalization.CultureInfo(manifestModule.GetString(rec.Culture));
}
else
{
name.CultureInfo = System.Globalization.CultureInfo.InvariantCulture;
}
switch (rec.HashAlgId)
{
case 0:
name.HashAlgorithm = AssemblyHashAlgorithm.None;
break;
case 0x8003:
name.HashAlgorithm = AssemblyHashAlgorithm.MD5;
break;
case 0x8004:
name.HashAlgorithm = AssemblyHashAlgorithm.SHA1;
break;
default:
throw new BadImageFormatException();
}
name.CodeBase = this.CodeBase;
name.Flags = (AssemblyNameFlags)rec.Flags;
return name;
}
示例5: PosTest2
public bool PosTest2()
{
TestLibrary.TestFramework.BeginScenario("PosTest2: set a 0 length key then get and verify");
bool retVal = true;
try
{
byte[] key = new byte[0];
AssemblyName an = new AssemblyName();
an.SetPublicKey(key);
if (an.GetPublicKey() != key)
{
TestLibrary.TestFramework.LogError("002.1", "expect AssemblyName.GetPublicKey() equals what it's been set");
retVal = false;
}
}
catch (Exception e)
{
TestLibrary.TestFramework.LogError("002.2", "Unexpected exception: " + e);
retVal = false;
}
return retVal;
}
示例6: __GetReferencedAssemblies
public override AssemblyName[] __GetReferencedAssemblies()
{
List<AssemblyName> list = new List<AssemblyName>();
for (int i = 0; i < AssemblyRef.records.Length; i++)
{
AssemblyName name = new AssemblyName();
name.Name = GetString(AssemblyRef.records[i].Name);
name.Version = new Version(
AssemblyRef.records[i].MajorVersion,
AssemblyRef.records[i].MinorVersion,
AssemblyRef.records[i].BuildNumber,
AssemblyRef.records[i].RevisionNumber);
if (AssemblyRef.records[i].PublicKeyOrToken != 0)
{
byte[] keyOrToken = GetBlobCopy(AssemblyRef.records[i].PublicKeyOrToken);
const int PublicKey = 0x0001;
if ((AssemblyRef.records[i].Flags & PublicKey) != 0)
{
name.SetPublicKey(keyOrToken);
}
else
{
name.SetPublicKeyToken(keyOrToken);
}
}
else
{
name.SetPublicKeyToken(Empty<byte>.Array);
}
if (AssemblyRef.records[i].Culture != 0)
{
name.Culture = GetString(AssemblyRef.records[i].Culture);
}
else
{
name.Culture = "";
}
if (AssemblyRef.records[i].HashValue != 0)
{
name.hash = GetBlobCopy(AssemblyRef.records[i].HashValue);
}
name.RawFlags = (AssemblyNameFlags)AssemblyRef.records[i].Flags;
list.Add(name);
}
return list.ToArray();
}
示例7: GetName
public override AssemblyName GetName()
{
AssemblyName n = new AssemblyName();
n.Name = name;
n.Version = new Version(majorVersion, minorVersion, buildVersion, revisionVersion);
n.Culture = culture ?? "";
n.HashAlgorithm = hashAlgorithm;
n.RawFlags = flags;
n.SetPublicKey(publicKey != null ? (byte[])publicKey.Clone() : Empty<byte>.Array);
n.KeyPair = keyPair;
return n;
}
示例8: SetPublicKey_GetPublicKey
public void SetPublicKey_GetPublicKey(byte[] publicKey)
{
AssemblyName assemblyName = new AssemblyName();
assemblyName.SetPublicKey(publicKey);
Assert.Equal(publicKey, assemblyName.GetPublicKey());
}
示例9: Main
public static int Main ()
{
string basedir = BaseDirectory;
AssemblyDefinition assembly;
Assembly a;
AssemblyName an;
AssemblyBuilder ab;
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-2-lib.dll"));
if (assembly.Name.Attributes != AssemblyAttributes.PublicKey)
return 1;
a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-2-lib.dll"));
if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
return 2;
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-3-lib.dll"));
if (Environment.Version.Major >= 2) {
if (assembly.Name.Attributes != AssemblyAttributes.SideBySideCompatible)
return 3;
} else {
if (assembly.Name.Attributes != AssemblyAttributes.PublicKey)
return 3;
}
a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-3-lib.dll"));
if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
return 4;
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695.exe"));
if (assembly.Name.Attributes != AssemblyAttributes.SideBySideCompatible)
return 5;
a = Assembly.LoadFrom (Path.Combine (basedir, "test-695.exe"));
if (a.GetName ().Flags != AssemblyNameFlags.PublicKey)
return 6;
an = new AssemblyName ();
an.Name = "test-695-4-lib";
an.SetPublicKey (publicKey);
an.Flags = AssemblyNameFlags.Retargetable;
ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an,
AssemblyBuilderAccess.Save, basedir);
ab.Save ("test-695-4-lib.dll");
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-4-lib.dll"));
if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
return 7;
an = new AssemblyName ();
an.Name = "test-695-5-lib";
an.KeyPair = new StrongNameKeyPair (keyPair);
an.Flags = AssemblyNameFlags.Retargetable;
ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an,
AssemblyBuilderAccess.Save, basedir);
ab.Save ("test-695-5-lib.dll");
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-5-lib.dll"));
if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
return 8;
a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-5-lib.dll"));
if (a.GetName ().Flags != (AssemblyNameFlags.PublicKey | AssemblyNameFlags.Retargetable))
return 9;
an = new AssemblyName ();
an.Name = "test-695-6-lib";
an.KeyPair = new StrongNameKeyPair (keyPair);
an.Flags = AssemblyNameFlags.Retargetable;
ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an,
AssemblyBuilderAccess.Save, basedir);
an.Flags = AssemblyNameFlags.None;
ab.Save ("test-695-6-lib.dll");
assembly = AssemblyDefinition.ReadAssembly (Path.Combine (basedir, "test-695-6-lib.dll"));
if (assembly.Name.Attributes != (AssemblyAttributes.PublicKey | AssemblyAttributes.Retargetable))
return 10;
a = Assembly.LoadFrom (Path.Combine (basedir, "test-695-6-lib.dll"));
if (a.GetName ().Flags != (AssemblyNameFlags.PublicKey | AssemblyNameFlags.Retargetable))
return 11;
return 0;
}
示例10: Main
//.........这里部分代码省略.........
}
#endif
// set only the version
aname = new AssemblyName ();
aname.Name = "bug79522A";
aname.CodeBase = assemblyFile;
aname.Version = new Version (2, 4);
#if NET_2_0
AppDomain.CurrentDomain.Load (aname);
#else
try {
// culture is not set
AppDomain.CurrentDomain.Load (aname);
Assert.Fail ("#A6");
} catch (FileLoadException) {
}
#endif
// if both culture and version are set, then the version diff
// is ignored
aname = new AssemblyName ();
aname.Name = "bug79522A";
aname.CodeBase = assemblyFile;
aname.CultureInfo = CultureInfo.InvariantCulture;
aname.Version = new Version (2, 5);
AppDomain.CurrentDomain.Load (aname);
// loaded assembly is not signed
aname = new AssemblyName ();
aname.Name = "bug79522A";
aname.CodeBase = assemblyFile;
aname.CultureInfo = CultureInfo.InvariantCulture;
aname.SetPublicKey (publicKey);
try {
AppDomain.CurrentDomain.Load (aname);
Assert.Fail ("#A7");
} catch (FileLoadException) {
}
// if set, the culture must match
aname = new AssemblyName ();
aname.Name = "bug79522A";
aname.CodeBase = assemblyFile;
aname.Version = new Version (2, 4);
aname.CultureInfo = new CultureInfo ("en-US");
try {
AppDomain.CurrentDomain.Load (aname);
Assert.Fail ("#A8");
} catch (FileLoadException) {
}
aname = new AssemblyName ();
aname.Name = "bug79522A";
aname.CodeBase = assemblyFile;
aname.CultureInfo = CultureInfo.InvariantCulture;
AppDomain.CurrentDomain.Load (aname);
// PART B
assemblyFile = Path.Combine (tempDir, "bug79522B.dll");
aname = new AssemblyName ();
aname.Name = "bug79522B";
aname.CultureInfo = new CultureInfo ("nl-BE");
aname.Version = new Version (2, 4, 1);
示例11: __GetReferencedAssemblies
public override AssemblyName[] __GetReferencedAssemblies()
{
List<AssemblyName> list = new List<AssemblyName>();
for (int i = 0; i < AssemblyRef.records.Length; i++)
{
AssemblyName name = new AssemblyName();
name.Name = GetString(AssemblyRef.records[i].Name);
name.Version = new Version(
AssemblyRef.records[i].MajorVersion,
AssemblyRef.records[i].MinorVersion,
AssemblyRef.records[i].BuildNumber,
AssemblyRef.records[i].RevisionNumber);
if (AssemblyRef.records[i].PublicKeyOrToken != 0)
{
byte[] keyOrToken = GetBlobCopy(AssemblyRef.records[i].PublicKeyOrToken);
const int PublicKey = 0x0001;
if ((AssemblyRef.records[i].Flags & PublicKey) != 0)
{
name.SetPublicKey(keyOrToken);
}
else
{
name.SetPublicKeyToken(keyOrToken);
}
}
if (AssemblyRef.records[i].Culture != 0)
{
name.CultureInfo = new System.Globalization.CultureInfo(GetString(AssemblyRef.records[i].Culture));
}
else
{
name.CultureInfo = System.Globalization.CultureInfo.InvariantCulture;
}
name.Flags = (AssemblyNameFlags)AssemblyRef.records[i].Flags;
list.Add(name);
}
return list.ToArray();
}
示例12: SetPublicKey
// copied from /mcs/mcs/codegen.cs
private void SetPublicKey (AssemblyName an, byte[] strongNameBlob)
{
// check for possible ECMA key
if (strongNameBlob.Length == 16) {
// will be rejected if not "the" ECMA key
an.SetPublicKey (strongNameBlob);
} else {
// take it, with or without, a private key
RSA rsa = CryptoConvert.FromCapiKeyBlob (strongNameBlob);
// and make sure we only feed the public part to Sys.Ref
byte[] publickey = CryptoConvert.ToCapiPublicKeyBlob (rsa);
// AssemblyName.SetPublicKey requires an additional header
byte[] publicKeyHeader = new byte [12] { 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00 };
byte[] encodedPublicKey = new byte [12 + publickey.Length];
Buffer.BlockCopy (publicKeyHeader, 0, encodedPublicKey, 0, 12);
Buffer.BlockCopy (publickey, 0, encodedPublicKey, 12, publickey.Length);
an.SetPublicKey (encodedPublicKey);
}
}
示例13: Main
static void Main ()
{
string basedir = AppDomain.CurrentDomain.BaseDirectory;
AssemblyDefinition assembly;
Assembly a;
AssemblyName an;
AssemblyBuilder ab;
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libA.dll"));
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#A1");
a = Assembly.LoadFrom (Path.Combine (basedir, "libA.dll"));
Assert.AreEqual (AssemblyNameFlags.PublicKey, a.GetName ().Flags, "#A2");
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libB.dll"));
#if ONLY_1_0
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#B1");
#elif NET_2_0
Assert.AreEqual (AssemblyFlags.PublicKey | AssemblyFlags.DisableJITcompileOptimizer, assembly.Name.Flags, "#B1");
#else
Assert.AreEqual (AssemblyFlags.PublicKey | AssemblyFlags.Retargetable, assembly.Name.Flags, "#B1");
#endif
a = Assembly.LoadFrom (Path.Combine (basedir, "libB.dll"));
#if ONLY_1_0
Assert.AreEqual (AssemblyNameFlags.PublicKey, a.GetName ().Flags, "#B2");
#elif NET_2_0
Assert.AreEqual (AssemblyNameFlags.PublicKey | AssemblyNameFlags.EnableJITcompileOptimizer, a.GetName ().Flags, "#B2");
#else
Assert.AreEqual (AssemblyNameFlags.PublicKey | AssemblyNameFlags.Retargetable, a.GetName ().Flags, "#B2");
#endif
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libC.dll"));
#if NET_2_0
Assert.AreEqual (AssemblyFlags.SideBySideCompatible, assembly.Name.Flags, "#C1");
#else
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#C1");
#endif
a = Assembly.LoadFrom (Path.Combine (basedir, "libC.dll"));
Assert.AreEqual (AssemblyNameFlags.PublicKey, a.GetName ().Flags, "#C2");
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libD.dll"));
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#D1");
a = Assembly.LoadFrom (Path.Combine (basedir, "libD.dll"));
Assert.AreEqual (AssemblyNameFlags.PublicKey, a.GetName ().Flags, "#D2");
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "test.exe"));
Assert.AreEqual (AssemblyFlags.SideBySideCompatible, assembly.Name.Flags, "#E1");
a = Assembly.LoadFrom (Path.Combine (basedir, "test.exe"));
Assert.AreEqual (AssemblyNameFlags.PublicKey, a.GetName ().Flags, "#E2");
an = new AssemblyName ();
an.Name = "libE";
an.SetPublicKey (publicKey);
#if ONLY_1_0
an.Flags = AssemblyNameFlags.None;
#elif NET_2_0
an.Flags = AssemblyNameFlags.EnableJITcompileOptimizer;
#else
an.Flags = AssemblyNameFlags.Retargetable;
#endif
ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an,
AssemblyBuilderAccess.Save, basedir);
ab.Save ("libE.dll");
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libE.dll"));
#if ONLY_1_0
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#E1");
#elif NET_2_0
Assert.AreEqual (AssemblyFlags.PublicKey | AssemblyFlags.DisableJITcompileOptimizer, assembly.Name.Flags, "#E1");
#else
Assert.AreEqual (AssemblyFlags.PublicKey | AssemblyFlags.Retargetable, assembly.Name.Flags, "#E1");
#endif
an = new AssemblyName ();
an.Name = "libF";
an.KeyPair = new StrongNameKeyPair (keyPair);
#if ONLY_1_0
an.Flags = AssemblyNameFlags.None;
#elif NET_2_0
an.Flags = AssemblyNameFlags.EnableJITcompileOptimizer;
#else
an.Flags = AssemblyNameFlags.Retargetable;
#endif
ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an,
AssemblyBuilderAccess.Save, basedir);
ab.Save ("libF.dll");
assembly = AssemblyFactory.GetAssembly (Path.Combine (basedir, "libF.dll"));
#if ONLY_1_0
Assert.AreEqual (AssemblyFlags.PublicKey, assembly.Name.Flags, "#F1");
#elif NET_2_0
Assert.AreEqual (AssemblyFlags.PublicKey | AssemblyFlags.DisableJITcompileOptimizer, assembly.Name.Flags, "#F1");
#else
//.........这里部分代码省略.........