【问题标题】:FileIOPermission SecurityException when running Xunit in TFS在 TFS 中运行 Xunit 时出现 FileIOPermission SecurityException
【发布时间】:2011-05-20 08:07:20
【问题描述】:

我正在尝试将 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)

【问题讨论】:

    标签: c# tfs securityexception xunit


    【解决方案1】:

    默认情况下,TFS 构建服务作为“网络服务”运行。您可以通过在构建机器上的服务控制管理器 (services.msc) 中检查 Team Foundation 构建服务的“属性”对话框的“身份”选项卡来检查这一点。如果您使用的是 TFS 2010,您还可以在构建机器上的 TFS 管理控制台中检查身份。

    有点令人惊讶的是,“所有人”组不包括“网络服务”帐户。因此,您需要将 XUnit 文件夹的读取/执行权限授予网络服务帐户。我假设它是本地文件夹而不是网络共享。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2023-04-09
      • 2015-09-17
      相关资源
      最近更新 更多