问题
Since AppDomain.AppendPrivatePath() is obsolete, I'm trying to figure out how to specify a PrivateBinPath for the current AppDomain in my project without spinning up a whole new AppDomain, and being able to access it later.
I know I can set the PrivateBinPath on an AppDomainSetup object (which would be ok if I wanted to create a new AppDomain), and I also know that I can add it to my app.config like so:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=".\AlternateLookupPath" />
</assemblyBinding>
</runtime>
However, when adding this entry to my app.config, the AppDomain.CurrentDomain.SetupInformation.PrivateBinPath property is null.
回答1:
use
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="AlternateLookupPath" />
</assemblyBinding>
</runtime>
According to http://msdn.microsoft.com/en-us/library/823z9h8w.aspx the privatePath
is already interpreted as "subdirectories of the application's base directory"... so I suspect that using .\
is somehow messing things up...
回答2:
From the docs:
If the directories specified for PrivateBinPath are not under ApplicationBase, they are ignored.
So, you need to make sure the paths you are add are under ApplicationBase.
This only works with app.config however. If you need to do this at runtime, use the AssemblyResolve event as described in the docs:
http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx
来源:https://stackoverflow.com/questions/1348197/how-to-properly-access-the-privatebinpath-property-of-the-current-appdomain