我需要在我自己的库中嵌入引用的程序集作为资源。为此,我创建了一个包含3个项目的小样本解决方案。
第一个称为First
并且没有依赖关系。第二个名为Second
,取决于First
。第三个是OutProj
,并且引用了Second
。
我找到了关于PreApplicationStartMethodAttribute
的{{3}}文章。我添加了
[assembly: PreApplicationStartMethod(typeof(SecondNs.Startup), "Start")]
到我的测试项目的AssemblyInfo类(包含后的第一行)。接下来我已经定义了类和方法:
class Startup
{
public static void Start()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(Resolver);
}
static System.Reflection.Assembly Resolver(object sender, ResolveEventArgs args)
{
var name = args.Name.Substring(0, args.Name.IndexOf(','));
byte[] block = null;
switch (name)
{
case "First":
block = Properties.Resources.First;
break;
default:
break;
}
Assembly a2 = Assembly.Load(block);
return a2;
}
}
Second
和OutProj
都定义了这个类,但是切换情况有所不同(原始代码没有做到这一点,所以我对其进行了修改)。
我的主要问题是Start方法没有被调用。当我将开始方法代码添加到我的Main方法时,确实会被调用,但我的类库中没有Main。这是正确的方法还是有更好的方法来做到这一点?