0

XunitテストをTFSビルドに統合しようとしています。

xunit.runner.msbuild.dllとxunit.runner.utility.dllをフォルダー「C:\ ProgramFiles \ 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)
4

1 に答える 1

0

デフォルトでは、TFSビルドサービスは「ネットワークサービス」として実行されます。これを確認するには、ビルドマシンのサービスコントロールマネージャー(services.msc)でTeamFoundationビルドサービスの[プロパティ]ダイアログの[ID]タブを確認します。TFS 2010を使用している場合は、ビルドマシンのTFS管理コンソールでIDを確認することもできます。

やや意外なことに、「Everyone」グループには「NetworkService」アカウントが含まれていません。そのため、XUnitフォルダーの読み取り/実行権限をネットワークサービスアカウントに付与する必要があります。これはローカルフォルダであり、ネットワーク共有ではないと想定しています。

于 2011-05-21T00:20:03.903 に答える