首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不生成AppDomain.DynamicDirectory

不生成AppDomain.DynamicDirectory
EN

Stack Overflow用户
提问于 2018-03-07 19:44:42
回答 1查看 510关注 0票数 7

我正在使用下面的代码创建一个AppDomain

代码语言:javascript
复制
String pa = @"C:\Users\user\AppData\Local\Temp\2\db5fjamk.xnl";
System.IO.Directory.CreateDirectory(pa);
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; //f:\projectpath\out\debug-i386-unittest\UnitTests
setup.ApplicationName = string.Concat(AppDomain.CurrentDomain.FriendlyName, DateTime.UtcNow.Ticks); //UnitTestAdapter: Running test636559691791186101
setup.DynamicBase = pa;
Evidence evidence = AppDomain.CurrentDomain.Evidence;
_Domain = AppDomain.CreateDomain(setup.ApplicationName, evidence, setup);

但是_Domain.DynamicDirectory属性不存在。https://msdn.microsoft.com/en-us/library/system.appdomain.dynamicdirectory(v=vs.110).aspx明确表示使用了AppDomainSetup.DynamicBase。

在vstest.console.exe中执行的原因是什么改变了应用程序域的行为。这附近有工作吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-10 06:33:40

溶液

检查AppDomain.CurrentDomain.FriendlyName是否包含非法字符,如冒号(:)。如果是,您应该使用SO问题setup.ApplicationName中讨论的方法之一对How to remove illegal characters from path and filenames?进行消毒。

背景

当我调试测试时,我得到了一个带有消息System.NotSupportedExceptionThe given path's format is not supported.

堆栈跟踪是

代码语言:javascript
复制
at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
at System.AppDomain.get_DynamicDirectory()
at System.AppDomain.get_DynamicDirectory()
at SO_AppDomain.Sut.Method() in <path>\Program.cs:line 30
at UnitTestProject1.UnitTest1.TestMethod1() in <path>\UnitTest1.cs:line 14

AppDomain.CurrentDomain.FriendlyName值为TestSourceHost: Enumering assembly

快速查看EmulateFileIOPermissionChecks (这是堆栈跟踪中出现的最后一个方法)就会发现,如果PathInternal.HasInvalidVolumeSeparator返回true,它将抛出一个NotSupportedException。该方法包含以下注释:

代码语言:javascript
复制
 // Toss out paths with colons that aren't a valid drive specifier.
 // Cannot start with a colon and can only be of the form "C:" or "\\?\C:".

字符串TestSourceHost: Enumering assembly显然违反了该规则。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49160044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档