Silverlight Assembly.Load() only works with the fu

2019-07-03 06:34发布

问题:

Apparently the implementation of Assembly.Load() in Silverlight needs a full/strong name.

E.g. this works:

Assembly.Load("MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...");

while this will fail even if MyAssembly is already loaded:

Assembly.Load("MyAssembly");

Is there a workaround so that it's possible to use the simple name?

回答1:

As far as I know, there isn't a way to work around this in Silverlight without using the full name. However, you may be able to accomplish your ultimate goal (depending on what you're trying to do) in another way. For example, the XAML parser is a little more forgiving about assembly names, so if you're just trying to create an instance of a class within that assembly (using the default constructor), then something like

XamlReader.Load("<my:ClassName xmlns:my='clr-namespace:MyNamespace;assembly=MyAssemblyShortName' />")

should do the trick.



回答2:

One way that I got around this was to use typeof on a type contained in the assembly that I need to get a reference to:

var assembly = typeof(MyNamespace.SubNamespace.Type).Assembly;