2011-05-20 11 views
0

我正試圖將Xunit測試集成到我們的TFS構建中。在TFS中運行Xunit時出現FileIOPermission SecurityException

我已將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" /> 

我得到它,我不知道如何調試錯誤。我曾嘗試給Xunit文件夾上的「Everyone」用戶完全控制。

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

默認情況下,TFS構建服務作爲「網絡服務」運行。您可以通過檢查生成機器上的服務控制管理器中的Team Foundation生成服務(services.msc)的「屬性」對話框的「標識」選項卡來檢查此問題。如果您使用的是TFS 2010,則還可以在構建機器上的TFS管理控制檯中檢查身份。

有些令人驚訝的是,「所有人」組不包含「網絡服務」帳戶。因此,您需要將您的XUnit文件夾的讀取/執行權限授予網絡服務帳戶。我假設它是一個本地文件夾,而不是網絡共享。

相關問題