private ModuleBuilder CreateModule(bool signStrongName)
{
var assemblyName = GetAssemblyName(signStrongName);
var moduleName = signStrongName ? StrongNamedModuleName : WeakNamedModuleName;
#if !SILVERLIGHT
if (savePhysicalAssembly)
{
AssemblyBuilder assemblyBuilder;
try
{
assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(
assemblyName, AssemblyBuilderAccess.RunAndSave, signStrongName ? StrongNamedModuleDirectory : WeakNamedModuleDirectory);
}
catch (ArgumentException e)
{
if (signStrongName == false && e.StackTrace.Contains("ComputePublicKey") == false)
{
// I have no idea what that could be
throw;
}
var message =
string.Format(
"There was an error creating dynamic assembly for your proxies - you don't have permissions required to sign the assembly. To workaround it you can enforce generating non-signed assembly only when creating {0}. ALternatively ensure that your account has all the required permissions.",
GetType());
throw new ArgumentException(message, e);
}
var module = assemblyBuilder.DefineDynamicModule(moduleName, moduleName, false);
return module;
}
else
#endif
{
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(
assemblyName,
AssemblyBuilderAccess.Run);
var module = assemblyBuilder.DefineDynamicModule(moduleName, false);
return module;
}
}