0

私はappdomainの概念が初めてです。ここでは、シャドウ コピーは参照しているアセンブリのコピーを作成すると述べていますが、ShadowCopyDirectories を確認すると空です。

これが私のコードです:

        AppDomainSetup sandboxDomainSetup = new AppDomainSetup();
        sandboxDomainSetup.ApplicationBase = @"D:\Testing\AppDomainTestProject\MainUI\bin\Debug";
        sandboxDomainSetup.ShadowCopyFiles = "true";
        string appData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
        string tempfolder = Path.Combine(appData, "TestAppDomain"); //C:\ProgramData\TestAppDomain
        if (!Directory.Exists(tempfolder))
        {
            Directory.CreateDirectory(tempfolder);
        }
        sandboxDomainSetup.ShadowCopyDirectories = tempfolder;

        sandbox = AppDomain.CreateDomain("MyAppDomain", null, sandboxDomainSetup);

        Assembly sandboxAssembly = Assembly.LoadFrom(assemblyPath.ToString());
        var instance = sandbox.CreateInstance(sandboxAssembly.GetName().Name, sandboxAssembly.GetTypes().FirstOrDefault().FullName);
        if (instance != null)
        {
            object obj = instance.Unwrap();}

私は何かを逃しましたか?ありがとうございました

4

1 に答える 1

1

AppDomainSetup.ShadowCopyDirectoriesプロパティは、ロード時にシャドウ コピーされるアセンブリを含むディレクトリを指定するためのものです。これは、アセンブリがコピーされる場所ではありません。AppDomainSetup.CachePathプロパティは、探しているものです。サンプル コードでは、シャドウ コピーは正常に有効にされましたが、読み込まれたアセンブリは CLR によって作成された一時フォルダーにコピーされました。

于 2013-08-16T09:20:58.743 に答える