我正在尝试将Xunit测试集成到我们的TFS构建中。
我已将xunit.runner.msbuild.dll和xunit.runner.utility.dll放在“C:\ Program Files \ MSBuild \ Xunit”文件夹中。我在构建文件中有一个任务来调用Xunit任务:
<UsingTask AssemblyFile="$(MSBuildExtensionsPath)\Xunit\xunit.runner.msbuild.dll" TaskName="Xunit.Runner.MSBuild.xunit"/>
.....
<xunit Assembly="$(DropLocation)\$(BuildNumber)\Release\MyDll.dll" Html="TestRun.htm" />
我收到一个错误,我不知道如何调试。我试过让“Everyone”用户完全控制Xunit文件夹。
D:\bld\141\BuildType\Test.proj(50,3): error : System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
D:\bld\141\BuildType\Test.proj(50,3): error : at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
D:\bld\141\BuildType\Test.proj(50,3): error : at System.Security.CodeAccessPermission.Demand()
D:\bld\141\BuildType\Test.proj(50,3): error : at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
D:\bld\141\BuildType\Test.proj(50,3): error : at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
D:\bld\141\BuildType\Test.proj(50,3): error : at Xunit.Sdk.Executor..ctor(String assemblyFilename)
D:\bld\141\BuildType\Test.proj(50,3): error : at Xunit.ExecutorWrapper.RethrowWithNoStackTraceLoss(Exception ex)
D:\bld\141\BuildType\Test.proj(50,3): error : at Xunit.ExecutorWrapper.CreateObject(String typeName, Object[] args)
D:\bld\141\BuildType\Test.proj(50,3): error : at Xunit.ExecutorWrapper..ctor(String assemblyFilename, String configFilename, Boolean shadowCopy)
D:\bld\141\BuildType\Test.proj(50,3): error : at Xunit.Runner.MSBuild.xunit.ExecuteAssembly(String assemblyFilename, String configFilename, IRunnerLogger logger)
答案 0 :(得分:0)
默认情况下,TFS Build Service作为“网络服务”运行。您可以通过检查构建计算机上Service Control Manager(services.msc)中Team Foundation Build Service的“属性”对话框的“标识”选项卡来检查此问题。如果您正在使用TFS 2010,还可以在构建计算机上的TFS管理控制台中检查身份。
有些令人惊讶的是,“Everyone”群组不包含“网络服务”帐户。因此,您需要将XUnit文件夹的读/执行权限授予网络服务帐户。我假设它是一个本地文件夹而不是网络共享。