从动态创建的类中引用嵌入式程序集
|
我一直在使用将dll(嵌入式资源)嵌入到exe文件中的技术,并使用以下代码在运行时解析未知的dll。
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
String resourceName = \"Project.lib.\" + new AssemblyName(args.Name).Name + \".dll\";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
但是,当我嵌入Spark View Engine dll(例如)时,它掉落了。但是只在一个特定的地方。 Spark本身可以动态地动态生成类。这些类然后引用Spark(using Spark
等)。正是在这一点上,我得到以下错误。
类型\'Spark.Class \'在以下位置定义
未引用的程序集。
您必须添加对
程序集“火花”
我很确定这与Spark视图引擎无关,而与从动态生成的类中引用嵌入式程序集有关。
更新:stacktrace
运行时发生异常
项目任务消息:
Spark.Compiler.BatchCompilerException:
动态视图编译失败。
c:\\ Users \\ Adam \\ AppData \\ Local \\ Temp \\ kdsjyhvu.0.cs(6,14):
错误CS0012:类型
\'Spark.AbstractSparkView \'已定义
在未引用的装配体中。
您必须添加对程序集的引用
\'Spark,版本= 1.5.0.0,
文化=中立,
PublicKeyToken = 7f8549eed921a12c \',位于
Spark.Compiler.BatchCompiler.Compile(布尔
调试,String languageOrExtension,
String [] sourceCode)
Spark.Compiler.CSharp.CSharpViewCompiler.CompileView(IEnumerable1
viewTemplates, IEnumerable
1
allResources)
Spark.SparkViewEngine.CreateEntryInternal(SparkViewDescriptor
描述符,布尔编译)在
Spark.SparkViewEngine.CreateEntry(SparkViewDescriptor
描述符)
Spark.SparkViewEngine.CreateInstance(SparkViewDescriptor
描述符)
ProjectTasks.Core.Templater.Populate(String
templateFilePath,对象数据)
\\ ProjectTasks \\ Core \\ Templater.cs:line
33在
ProjectTasks..Core.EmailTemplates.RenderImpl(String
名称,对象数据)
\\ ProjectTasks \\ Core \\ EmailTemplates.cs:line
19点
ProjectTasks.Tasks.EmailUsersWithIncompleteModules.Run()
在
\\ ProjectTasks \\ Tasks \\ EmailUsersWithIncompleteModules.cs:line
41岁
ProjectTasks.MaintenanceTaskRunner.Run(布尔
runNow,ImaintenanceTask []任务)
\\ ProjectTasks \\ MaintenanceTaskRunner.cs:line
25点
ProjectTasks.Initialiser.Init(String []
args)在
\\ ProjectTasks \\ Initialiser.cs:line
30
如果确实有解决方案,有人对解决方案有任何想法吗?
没有找到相关结果
已邀请:
3 个回复
物崎巩
羔磺
疾桓
最后,您应该有一个包含编译视图的输出dll,然后您可以按照嵌入主Spark.dll的相同方式来嵌入该dll。 希望能有所帮助 抢