The existing XUnit VSIX has been deprecated and replaced with a NuGet package.
This means that: -
<When> conditions into the project that have no children.build actions as the Nuget client does. Without this, the Visual Studio XUnit test runner won't work.I think future versions of the XUnit NuGet Package won't rely on msbuild in the future so hopefully this can be worked around cc: @bradwilson @adamralph - it would be good in future if Paket can be involved in the process for developing the XUnit package.
While I'm trying to get rid of the .targets files, it is very likely that we will continue to have the .props file in the xunit.core NuGet package, as it is the only officially supported way to get a file copied into the bin folder without taking a reference.
This is not just an xunit thing. There are plenty of NuGet packages with build/ artifacts. If Paket doesn't support them then it's only really supporting a subset of packages.
I noticed that the package contains two props files for different TargetFrameworks. How would this fit into our model that we install for all TargetFramework versions?
I assume it's possible to put the Import declarations inside of Choose/When tags, but at the top of the project the TargetFrameworkVersion is not defined!?
In the normal VS workflow, the doesn't allow you to specify more than one TargetFramework per .csproj file, i.e. the choice of TargetFramework seems to be pretty "global" for a given .csproj, for example, here's a newly created projects:

And here's the resulting .csproj:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\net20\xunit.runner.visualstudio.props" Condition="Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\net20\xunit.runner.visualstudio.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2E63521D-908E-42BC-BB7D-C7D78F8F055E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>XunitCrap</RootNamespace>
<AssemblyName>XunitCrap</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>f9c3353e</NuGetPackageImportStamp>
</PropertyGroup>
<!-- Snipped for brevity -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\net20\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\net20\xunit.runner.visualstudio.props'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
As it can be seen here, while the project is specifying .NET 4.5, the .props file that NuGet selected was the .NET 20 one, for completness sake, here is the "supported" list of frameworks from the Nuget build folder:

In this case, I can't understand what's going in NuGet's twisted mind, as I would expect a .NET 4.5 project to use the props file build/portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.visualstudio.props
rather then the one it is importing from net20.
Be that the case, as it may, I think that there is no harm in trying to mimic this as closely as possible with something like:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2E63521D-908E-42BC-BB7D-C7D78F8F055E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>XunitCrap</RootNamespace>
<AssemblyName>XunitCrap</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>f9c3353e</NuGetPackageImportStamp>
</PropertyGroup>
<Choose>
<When Condition=" '$(TargetFrameworkVersion)'=='v4.5' ">
<PropertyGroup>
<!-- this would be derived from the NuGet project id, which is xunit.runner.visualstudio for this specific package -->
<__xunit_runner_visualstudio_prop_path>build/portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.visualstudio.props</__xunit_runner_visualstudio_prop_path>
</PropertyGroup>
</When>
<When Condition=" '$(TargetFrameworkVersion)'=='v2.0' ">
<PropertyGroup>
<!-- this would be derived from the NuGet project id, which is xunit.runner.visualstudio for this specific package -->
<__xunit_runner_visualstudio_prop_path>build/net20/xunit.runner.visualstudio.props</__xunit_runner_visualstudio_prop_path>
</PropertyGroup>
</When>
</Choose>
<Import Project="packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)" Condition="Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)')" />
<!-- Snipped for brevity -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)')" Text="$([System.String]::Format('$(ErrorText)', 'packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
I know it's quite an undertaking, but does that sound anything close to what you guys think would work?
I assume it's possible to put the Import declarations inside of Choose/When tags, but at the top of the project the TargetFrameworkVersion is not defined!?
in your sample we would add the tags below the TargetFrameworkVersion part. question is: does it matter
If memory serves me well, when VS/MSBuild load project files they first read the "global" properties, i.e. they parse the property group with Configuration set to '', and then they re-parse the thing, with the actual selected configuration+platform, this time with the basic properties set.
Let me try and do this for real, and report if this works...
So, I've kind of done this, I can upload the resulting project so you could check that it works, but here' the build-log:
NuGet package restore started.
Restoring NuGet packages for solution x:\temp\XunitCrap\XunitCrap.sln.
NuGet Package restored finished for solution x:\temp\XunitCrap\XunitCrap.sln.
Restoring NuGet packages for project XunitCrap.
Restoring NuGet packages listed in file x:\temp\XunitCrap\packages.config.
Skipping NuGet package xunit.runner.visualstudio 2.0.0-rc1-build1030 since it is already installed.
NuGet Package restored finished for project XunitCrap.
All packages are already installed and there is nothing to restore.
NuGet package restore finished.
1>------ Rebuild All started: Project: XunitCrap, Configuration: debug-net20 Any CPU ------
1>Build started 26/1/2015 19:45:36.
1>Building with tools version "12.0".
1>Target "_CheckForInvalidConfigurationAndPlatform" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (entry point):
1>Task "Error" skipped, due to false condition; ( '$(_InvalidConfigurationError)' == 'true' ) was evaluated as ( '' == 'true' ).
1>Task "Warning" skipped, due to false condition; ( '$(_InvalidConfigurationWarning)' == 'true' ) was evaluated as ( '' == 'true' ).
1>Using "Message" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Message"
1> Configuration=debug-net20
1>Done executing task "Message".
1>Task "Message"
1> Platform=AnyCPU
1>Done executing task "Message".
1>Task "Error" skipped, due to false condition; ('$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')) was evaluated as ('bin\Debug\' != '' and !HasTrailingSlash('bin\Debug\')).
1>Task "Error" skipped, due to false condition; ('$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')) was evaluated as ('obj\' != '' and !HasTrailingSlash('obj\')).
1>Task "Error" skipped, due to false condition; ('$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')) was evaluated as ('obj\debug-net20\' != '' and !HasTrailingSlash('obj\debug-net20\')).
1>Done building target "_CheckForInvalidConfigurationAndPlatform" in project "XunitCrap.csproj".
1>Target "BeforeRebuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Rebuild" depends on it):
1>Done building target "BeforeRebuild" in project "XunitCrap.csproj".
1>Target "BeforeClean" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Clean" depends on it):
1>Done building target "BeforeClean" in project "XunitCrap.csproj".
1>Target "UnmanagedUnregistration" skipped, due to false condition; ((('$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)' or '$(RegisterForComInterop)' != 'true' or '$(OutputType)' != 'library') or
1> ('$(_AssemblyTimestampBeforeCompile)' == '')) and
1> Exists('@(_UnmanagedRegistrationCache)')) was evaluated as ((('' != '' or '' != 'true' or 'Library' != 'library') or
1> ('' == '')) and
1> Exists('obj\XunitCrap.csproj.UnmanagedRegistration.cache')).
1>Target "CoreClean" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Clean" depends on it):
1>Using "Delete" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Delete"
1> File "obj\debug-net20\\TempCA\XunitCrap.pdb" doesn't exist. Skipping.
1> File "obj\debug-net20\\TempCA\XunitCrap.dll" doesn't exist. Skipping.
1>Done executing task "Delete".
1>Using "ReadLinesFromFile" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "ReadLinesFromFile"
1>Done executing task "ReadLinesFromFile".
1>Using "FindUnderPath" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "FindUnderPath"
1> Comparison path is "bin\Debug\".
1>Done executing task "FindUnderPath".
1>Task "FindUnderPath"
1> Comparison path is "obj\debug-net20\".
1>Done executing task "FindUnderPath".
1>Task "Delete"
1> Deleting file "x:\temp\XunitCrap\bin\Debug\xunit.runner.visualstudio.testadapter.dll".
1> Deleting file "x:\temp\XunitCrap\bin\Debug\xunit.runner.utility.desktop.dll".
1> Deleting file "x:\temp\XunitCrap\bin\Debug\xunit.abstractions.dll".
1> Deleting file "x:\temp\XunitCrap\bin\Debug\XunitCrap.dll".
1> Deleting file "x:\temp\XunitCrap\bin\Debug\XunitCrap.pdb".
1> Deleting file "x:\temp\XunitCrap\obj\debug-net20\XunitCrap.dll".
1> Deleting file "x:\temp\XunitCrap\obj\debug-net20\XunitCrap.pdb".
1>Done executing task "Delete".
1>Using "RemoveDuplicates" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "RemoveDuplicates"
1>Done executing task "RemoveDuplicates".
1>Using "MakeDir" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "MakeDir"
1>Done executing task "MakeDir".
1>Using "WriteLinesToFile" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "WriteLinesToFile"
1>Done executing task "WriteLinesToFile".
1>Done building target "CoreClean" in project "XunitCrap.csproj".
1>Target "AssignProjectConfiguration" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CleanReferencedProjects" depends on it):
1>Using "AssignProjectConfiguration" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "AssignProjectConfiguration"
1>Done executing task "AssignProjectConfiguration".
1>Done building target "AssignProjectConfiguration" in project "XunitCrap.csproj".
1>Target "_SplitProjectReferencesByFileExistence" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CleanReferencedProjects" depends on it):
1>Task "ResolveNonMSBuildProjectOutput" skipped, due to false condition; ('$(BuildingInsideVisualStudio)'=='true' and '@(ProjectReferenceWithConfiguration)'!='') was evaluated as ('true'=='true' and ''!='').
1>Done building target "_SplitProjectReferencesByFileExistence" in project "XunitCrap.csproj".
1>Target "CleanReferencedProjects" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Clean" depends on it):
1>Task "MSBuild" skipped, due to false condition; ('$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('true' != 'true' and 'true' == 'true' and '' != '').
1>Done building target "CleanReferencedProjects" in project "XunitCrap.csproj".
1>Target "CleanPublishFolder" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Clean" depends on it):
1>Task "RemoveDir" skipped, due to false condition; ('$(PublishDir)'=='$(OutputPath)app.publish\' and Exists('$(PublishDir)')) was evaluated as ('bin\Debug\app.publish\'=='bin\Debug\app.publish\' and Exists('bin\Debug\app.publish\')).
1>Done building target "CleanPublishFolder" in project "XunitCrap.csproj".
1>Target "AfterClean" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Clean" depends on it):
1>Done building target "AfterClean" in project "XunitCrap.csproj".
1>Target "EntityClean" skipped, due to false condition; ('@(EntityDeploy)' != '') was evaluated as ('' != '').
1>Target "Clean" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Rebuild" depends on it):
1>Done building target "Clean" in project "XunitCrap.csproj".
1>Target "CleanXsdCodeGen" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.ServiceModel.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Rebuild" depends on it):
1>Task "Delete"
1>Done executing task "Delete".
1>Done building target "CleanXsdCodeGen" in project "XunitCrap.csproj".
1>Target "EntityDeploy" skipped, due to false condition; ('@(EntityDeploy)' != '') was evaluated as ('' != '').
1>Target "BeforeBuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Build" depends on it):
1>Done building target "BeforeBuild" in project "XunitCrap.csproj".
1>Target "BuildOnlySettings" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "BuildOnlySettings" in project "XunitCrap.csproj".
1>Target "GetFrameworkPaths" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.NetFramework.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareForBuild" depends on it):
1>Done building target "GetFrameworkPaths" in project "XunitCrap.csproj".
1>Target "GetWinFXPath" skipped, due to false condition; (('@(Page)' != '' or '@(ApplicationDefinition)' != '' or '@(Resource)' != '') and ('$(GetWinFXNativePath)' != '' or '$(GetWinFXWoWPath)' != '' )) was evaluated as (('' != '' or '' != '' or '' != '') and ('' != '' or '' != '' )).
1>Target "GetReferenceAssemblyPaths" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareForBuild" depends on it):
1>Using "GetReferenceAssemblyPaths" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "GetReferenceAssemblyPaths"
1>Done executing task "GetReferenceAssemblyPaths".
1>Done building target "GetReferenceAssemblyPaths" in project "XunitCrap.csproj".
1>Target "AssignLinkMetadata" skipped, due to false condition; ( '$(SynthesizeLinkMetadata)' == 'true' ) was evaluated as ( '' == 'true' ).
1>Target "EnsureNuGetPackageBuildImports" in project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareForBuild" depends on it):
1>Task "Error" skipped, due to false condition; (!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)')) was evaluated as (!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build/portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.visualstudio.props')).
1>Done building target "EnsureNuGetPackageBuildImports" in project "XunitCrap.csproj".
1>Target "PrepareForBuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Using "FindAppConfigFile" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "FindAppConfigFile"
1>Done executing task "FindAppConfigFile".
1>Task "MakeDir"
1>Done executing task "MakeDir".
1>Done building target "PrepareForBuild" in project "XunitCrap.csproj".
1>Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
1>Target "BeforeResolveReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveReferences" depends on it):
1>Done building target "BeforeResolveReferences" in project "XunitCrap.csproj".
1>Target "AssignProjectConfiguration" skipped. Previously built successfully.
1>Target "AssignProjectConfiguration" skipped. Previously built successfully.
1>Target "_SplitProjectReferencesByFileExistence" skipped. Previously built successfully.
1>Target "ResolveProjectReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveReferences" depends on it):
1>Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildProjectReferences)' != 'true') and '$(VisualStudioVersion)' != '10.0' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and ('true' == 'true' or 'true' != 'true') and '12.0' != '10.0' and '' != '').
1>Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildProjectReferences)' != 'true') and '$(VisualStudioVersion)' == '10.0' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and ('true' == 'true' or 'true' != 'true') and '12.0' == '10.0' and '' != '').
1>Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and 'true' != 'true' and 'true' == 'true' and '' != '').
1>Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingProject)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and 'true' == 'true' and '' != '').
1>Task "Warning" skipped, due to false condition; ('@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceNonexistent)' != '') was evaluated as ('' != '' and '' != '').
1>Done building target "ResolveProjectReferences" in project "XunitCrap.csproj".
1>Target "FindInvalidProjectReferences" skipped, due to false condition; ('$(FindInvalidProjectReferences)' == 'true') was evaluated as ('' == 'true').
1>Target "ResolveNativeReferences" skipped, due to false condition; ('@(NativeReference)'!='') was evaluated as (''!='').
1>Target "GetFrameworkPaths" skipped. Previously built successfully.
1>Target "GetReferenceAssemblyPaths" skipped. Previously built successfully.
1>Target "PrepareForBuild" skipped. Previously built successfully.
1>Target "GetInstalledSDKLocations" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveSDKReferences" depends on it):
1>Task "GetInstalledSDKLocations" skipped, due to false condition; ('@(SDKReference)' != '') was evaluated as ('' != '').
1>Done building target "GetInstalledSDKLocations" in project "XunitCrap.csproj".
1>Target "ResolveSDKReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveAssemblyReferences" depends on it):
1>Task "ResolveSDKReference" skipped, due to false condition; ('@(SDKReference)'!='') was evaluated as (''!='').
1>Done building target "ResolveSDKReferences" in project "XunitCrap.csproj".
1>Target "ResolveSDKReferences" skipped. Previously built successfully.
1>Target "ExpandSDKReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveAssemblyReferences" depends on it):
1>Task "GetSDKReferenceFiles" skipped, due to false condition; ('@(ResolvedSDKReference)'!='') was evaluated as (''!='').
1>Done building target "ExpandSDKReferences" in project "XunitCrap.csproj".
1>Target "ResolveAssemblyReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveReferences" depends on it):
1>Using "ResolveAssemblyReference" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "ResolveAssemblyReference"
1> TargetFrameworkMoniker:
1> .NETFramework,Version=v4.5
1> TargetFrameworkMonikerDisplayName:
1> .NET Framework 4.5
1> TargetedRuntimeVersion:
1> v4.0.30319
1> Assemblies:
1> System
1> System.Xml.Linq
1> System.Data.DataSetExtensions
1> Microsoft.CSharp
1> System.Data
1> System.Xml
1> System.Core
1> AssemblyFiles:
1> C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
1> CandidateAssemblyFiles:
1> x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll
1> x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll
1> x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll
1> TargetFrameworkDirectories:
1> C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\
1> InstalledAssemblyTables:
1> IgnoreInstalledAssemblyTable:
1> False
1> SearchPaths:
1> {CandidateAssemblyFiles}
1> {HintPathFromItem}
1> {TargetFrameworkDirectory}
1> {Registry:Software\Microsoft\.NETFramework,v4.5,AssemblyFoldersEx}
1> {AssemblyFolders}
1> {GAC}
1> {RawFileName}
1> bin\Debug\
1> AllowedAssemblyExtensions:
1> .winmd
1> .dll
1> .exe
1> AllowedRelatedFileExtensions:
1> .pdb
1> .xml
1> .pri
1> AppConfigFile:
1>
1> AutoUnify:
1> True
1> CopyLocalDependenciesWhenParentReferenceInGac:
1> True
1> FindDependencies:
1> True
1> TargetProcessorArchitecture:
1> msil
1> StateFile:
1> obj\debug-net20\XunitCrap.csprojResolveAssemblyReference.cache
1> InstalledAssemblySubsetTables:
1> IgnoreInstalledAssemblySubsetTable:
1> False
1> TargetFrameworkSubsets:
1> FullTargetFrameworkSubsetNames:
1> Full
1> ProfileName:
1>
1> FullFrameworkFolders:
1> C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\
1> LatestTargetFrameworkDirectories:
1> ProfileTablesLocation:
1> Primary reference "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll".
1> Reference found at search path location "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll".
1> This reference is not "CopyLocal" because it's in a Frameworks directory.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.DataSetExtensions.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.DataSetExtensions.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1> Primary reference "System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> Resolved file path is "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll".
1> Reference found at search path location "{TargetFrameworkDirectory}".
1> For SearchPath "{CandidateAssemblyFiles}".
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.visualstudio.testadapter.dll", but its name "xunit.runner.visualstudio.testadapter" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.runner.utility.desktop.dll", but its name "xunit.runner.utility.desktop" didn't match.
1> Considered "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\..\_common\xunit.abstractions.dll", but its name "xunit.abstractions" didn't match.
1> For SearchPath "{TargetFrameworkDirectory}".
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.winmd", but it didn't exist.
1> This reference is not "CopyLocal" because it's a prerequisite file.
1> The ImageRuntimeVersion for this reference is "v4.0.30319".
1>Done executing task "ResolveAssemblyReference".
1>Done building target "ResolveAssemblyReferences" in project "XunitCrap.csproj".
1>Target "GenerateBindingRedirects" skipped, due to false condition; ('$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true') was evaluated as ('' == 'true' and '' == 'true').
1>Target "GenerateBindingRedirectsUpdateAppConfig" skipped, due to false condition; ('$(AutoGenerateBindingRedirects)' == 'true' and '$(GenerateBindingRedirectsOutputType)' == 'true' and Exists('$(_GenerateBindingRedirectsIntermediateAppConfig)')) was evaluated as ('' == 'true' and '' == 'true' and Exists('obj\debug-net20\XunitCrap.csproj.XunitCrap.dll.config')).
1>Target "ResolveComReferences" skipped, due to false condition; ('@(COMReference)'!='' or '@(COMFileReference)'!='') was evaluated as (''!='' or ''!='').
1>Target "AfterResolveReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveReferences" depends on it):
1>Done building target "AfterResolveReferences" in project "XunitCrap.csproj".
1>Target "GetReferenceAssemblyPaths" skipped. Previously built successfully.
1>Target "ImplicitlyExpandDesignTimeFacades" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.NetFramework.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResolveReferences" depends on it):
1>Task "Message" skipped, due to false condition; ('%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades') was evaluated as ('{TargetFrameworkDirectory}' == 'ImplicitlyExpandDesignTimeFacades').
1>Task "Message" skipped, due to false condition; ('%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades') was evaluated as ('C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll' == 'ImplicitlyExpandDesignTimeFacades').
1>Done building target "ImplicitlyExpandDesignTimeFacades" in project "XunitCrap.csproj".
1>Target "ResolveTestReferences" skipped, due to false condition; ('@(Shadow)'!='') was evaluated as (''!='').
1>Target "ResolveReferences" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "ResolveReferences" in project "XunitCrap.csproj".
1>Target "ValidationExtension" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WorkflowBuildExtensions.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Task "WorkflowBuildMessageTask" skipped, due to false condition; ('$(SkipWorkflowValidation)'!='' and '$(SkipWorkflowValidation)'!='true' and '$(SkipWorkflowValidation)'!='false') was evaluated as (''!='' and ''!='true' and ''!='false').
1>Done building target "ValidationExtension" in project "XunitCrap.csproj".
1>Target "ExpressionBuildExtension" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WorkflowBuildExtensions.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Task "WorkflowBuildMessageTask" skipped, due to false condition; ('$(DisableWorkflowCompiledExpressions)'!='' and '$(DisableWorkflowCompiledExpressions)'!='true' and '$(DisableWorkflowCompiledExpressions)'!='false') was evaluated as (''!='' and ''!='true' and ''!='false').
1>Done building target "ExpressionBuildExtension" in project "XunitCrap.csproj".
1>Target "XamlMarkupCompilePass1" skipped, due to false condition; ('@(XamlPage)' != '' or '@(XamlAppDef)' != '') was evaluated as ('' != '' or '' != '').
1>Target "XamlMarkupCompileReadGeneratedFileList" skipped, due to false condition; ('@(XamlPage)' != '' or '@(XamlAppDef)' != '') was evaluated as ('' != '' or '' != '').
1>Target "XamlMarkupCompileAddFilesGenerated" skipped, due to false condition; ('@(XamlPage)' != '' or '@(XamlAppDef)' != '') was evaluated as ('' != '' or '' != '').
1>Target "XamlMarkupCompilePass2" skipped, due to false condition; ('$(XamlRequiresCompilationPass2)' == 'true' ) was evaluated as ('false' == 'true' ).
1>Target "XamlMarkupCompileReadPass2Flag" skipped, due to false condition; ('@(XamlPage)' != '' or '@(XamlAppDef)' != '') was evaluated as ('' != '' or '' != '').
1>Target "XamlMarkupCompileAddExtensionFilesGenerated" skipped, due to false condition; ('@(XamlPage)' != '' or '@(XamlAppDef)' != '') was evaluated as ('' != '' or '' != '').
1>Target "AddDeferredValidationErrorsFileToFileWrites" skipped, due to false condition; (Exists('$(DeferredValidationErrorsFileName)')) was evaluated as (Exists('obj\debug-net20\\AC2C1ABA-CCF6-44D4-8127-588FD4D0A860-DeferredValidationErrors.xml')).
1>Target "ReportValidationBuildExtensionErrors" skipped, due to false condition; ('$(SkipWorkflowValidation)' != 'true' and ('@(XamlPage)' != '' or '@(XamlAppDef)' != '')) was evaluated as ('' != 'true' and ('' != '' or '' != '')).
1>Target "MarkupCompilePass1" skipped, due to false condition; ('@(Page)' != '' or '@(ApplicationDefinition)' != '' ) was evaluated as ('' != '' or '' != '' ).
1>Target "AfterMarkupCompilePass1" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Done building target "AfterMarkupCompilePass1" in project "XunitCrap.csproj".
1>Target "MarkupCompilePass2ForMainAssembly" skipped, due to false condition; ('$(_RequireMCPass2ForMainAssembly)' == 'true' ) was evaluated as ('false' == 'true' ).
1>Target "FileClassification" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Task "FileClassifier" skipped, due to false condition; ('@(GeneratedBaml)' != '' or '@(Resource)' != '' or '@(Font)' != '') was evaluated as ('' != '' or '' != '' or '' != '').
1>Task "Message" skipped, due to false condition; ('$(MSBuildTargetsVerbose)'=='true') was evaluated as (''=='true').
1>Task "Message" skipped, due to false condition; ('$(MSBuildTargetsVerbose)'=='true') was evaluated as (''=='true').
1>Done building target "FileClassification" in project "XunitCrap.csproj".
1>Target "MainResourcesGeneration" skipped, due to false condition; ('@(MainEmbeddedFiles)' != '') was evaluated as ('' != '').
1>Target "AssignWinFXEmbeddedResource" skipped, due to false condition; ('@(WinFXEmbeddedResource)' != '') was evaluated as ('' != '').
1>Target "AssignTargetPaths" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResourceNames" depends on it):
1>Using "AssignTargetPath" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Task "AssignTargetPath" skipped, due to false condition; ('@(_DeploymentBaseManifestWithTargetPath)'=='' and '%(None.Extension)'=='.manifest') was evaluated as (''=='' and '.config'=='.manifest').
1>Done building target "AssignTargetPaths" in project "XunitCrap.csproj".
1>Target "AssignTargetPaths" skipped. Previously built successfully.
1>Target "SplitResourcesByCulture" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResourceNames" depends on it):
1>Task "Warning" skipped, due to false condition; ('@(ResxWithNoCulture)'!='') was evaluated as (''!='').
1>Task "Warning" skipped, due to false condition; ('@(ResxWithCulture)'!='') was evaluated as (''!='').
1>Task "Warning" skipped, due to false condition; ('@(NonResxWithCulture)'!='') was evaluated as (''!='').
1>Task "Warning" skipped, due to false condition; ('@(NonResxWithNoCulture)'!='') was evaluated as (''!='').
1>Using "AssignCulture" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "AssignCulture"
1>Done executing task "AssignCulture".
1>Done building target "SplitResourcesByCulture" in project "XunitCrap.csproj".
1>Target "CreateManifestResourceNames" skipped, due to false condition; ('@(EmbeddedResource)' != '') was evaluated as ('' != '').
1>Target "CreateCustomManifestResourceNames" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResourceNames" depends on it):
1>Done building target "CreateCustomManifestResourceNames" in project "XunitCrap.csproj".
1>Target "PrepareResourceNames" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Done building target "PrepareResourceNames" in project "XunitCrap.csproj".
1>Target "ResolveAssemblyReferences" skipped. Previously built successfully.
1>Target "SplitResourcesByCulture" skipped. Previously built successfully.
1>Target "BeforeResGen" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResGen" depends on it):
1>Done building target "BeforeResGen" in project "XunitCrap.csproj".
1>Target "CoreResGen" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResGen" depends on it):
1>Task "GenerateResource" skipped, due to false condition; ('%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2') was evaluated as ('' == 'Resx' and '' != 'false' and 'CLR4' != 'CLR2').
1>Task "GenerateResource" skipped, due to false condition; ('%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' == 'CLR2') was evaluated as ('' == 'Resx' and '' != 'false' and 'CLR4' == 'CLR2').
1>Done building target "CoreResGen" in project "XunitCrap.csproj".
1>Target "AfterResGen" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "ResGen" depends on it):
1>Done building target "AfterResGen" in project "XunitCrap.csproj".
1>Target "ResGen" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Done building target "ResGen" in project "XunitCrap.csproj".
1>Target "CompileLicxFiles" skipped, due to false condition; ('@(_LicxFile)'!='') was evaluated as (''!='').
1>Target "PrepareRdlFiles" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\ReportingServices\Microsoft.ReportingServices.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CompileRdlFiles" depends on it):
1>Task "CreateItem" skipped, due to false condition; ('%(Extension)'=='.rdlc') was evaluated as ('.dll'=='.rdlc').
1>Done building target "PrepareRdlFiles" in project "XunitCrap.csproj".
1>Target "RunRdlCompiler" skipped, due to false condition; ('@(RdlFile)'!='') was evaluated as (''!='').
1>Target "CompileRdlFiles" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\ReportingServices\Microsoft.ReportingServices.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareResources" depends on it):
1>Done building target "CompileRdlFiles" in project "XunitCrap.csproj".
1>Target "PrepareResources" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "PrepareResources" in project "XunitCrap.csproj".
1>Target "ResolveKeySource" skipped, due to false condition; ($(SignManifests) == 'true' or $(SignAssembly) == 'true') was evaluated as ( == 'true' or == 'true').
1>Target "CodeContractsSlipInDefineSymbolDynamically" skipped, due to false condition; ('$(CodeContractsEnableRuntimeChecking)' == 'true') was evaluated as ('' == 'true').
1>Target "ResolveReferences" skipped. Previously built successfully.
1>Target "ResolveKeySource" skipped, due to false condition; ($(SignManifests) == 'true' or $(SignAssembly) == 'true') was evaluated as ( == 'true' or == 'true').
1>Target "ResolveComReferences" skipped, due to false condition; ('@(COMReference)'!='' or '@(COMFileReference)'!='') was evaluated as (''!='' or ''!='').
1>Target "ResolveNativeReferences" skipped, due to false condition; ('@(NativeReference)'!='') was evaluated as (''!='').
1>Target "_SetExternalWin32ManifestProperties" skipped, due to false condition; ('$(GenerateClickOnceManifests)'=='true' or '@(NativeReference)'!='' or '@(ResolvedIsolatedComModules)'!='') was evaluated as (''=='true' or ''!='' or ''!='').
1>Target "_SetEmbeddedWin32ManifestProperties" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "SetWin32ManifestProperties" depends on it):
1>Using "GetFrameworkPath" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "GetFrameworkPath"
1>Done executing task "GetFrameworkPath".
1>Done building target "_SetEmbeddedWin32ManifestProperties" in project "XunitCrap.csproj".
1>Target "SetWin32ManifestProperties" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Done building target "SetWin32ManifestProperties" in project "XunitCrap.csproj".
1>Target "_GenerateCompileInputs" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Task "Warning" skipped, due to false condition; ('@(ManifestResourceWithNoCulture)'!='' and '%(ManifestResourceWithNoCulture.EmittedForCompatibilityOnly)'=='') was evaluated as (''!='' and ''=='').
1>Task "Warning" skipped, due to false condition; ('@(ManifestNonResxWithNoCultureOnDisk)'!='' and '%(ManifestNonResxWithNoCultureOnDisk.EmittedForCompatibilityOnly)'=='') was evaluated as (''!='' and ''=='').
1>Done building target "_GenerateCompileInputs" in project "XunitCrap.csproj".
1>Target "PrepareForBuild" skipped. Previously built successfully.
1>Target "GetReferenceAssemblyPaths" skipped. Previously built successfully.
1>Target "_SetTargetFrameworkMonikerAttribute" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.CSharp.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "GenerateTargetFrameworkMonikerAttribute" depends on it):
1>Done building target "_SetTargetFrameworkMonikerAttribute" in project "XunitCrap.csproj".
1>Target "GenerateTargetFrameworkMonikerAttribute" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "BeforeCompile" depends on it):
1>Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
1>Input files: C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.targets
1>Output files: x:\temp\.NETFramework,Version=v4.5.AssemblyAttributes.cs
1>Done building target "GenerateTargetFrameworkMonikerAttribute" in project "XunitCrap.csproj".
1>Target "GenerateAdditionalSources" skipped, due to false condition; ('@(AssemblyAttributes)' != '' and '$(GenerateAdditionalSources)' == 'true') was evaluated as ('' != '' and '' == 'true').
1>Target "BeforeCompile" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Done building target "BeforeCompile" in project "XunitCrap.csproj".
1>Target "_TimeStampBeforeCompile" skipped, due to false condition; ('$(RunPostBuildEvent)'=='OnOutputUpdated' or ('$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library')) was evaluated as (''=='OnOutputUpdated' or (''=='true' and 'Library'=='library')).
1>Target "GenerateCompiledExpressionsTempFile" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WorkflowBuildExtensions.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreCompile" depends on it):
1>Task "WriteLinesToFile" skipped, due to false condition; (!Exists('$(GenerateCompiledExpressionsTempFilePathForEditing)')) was evaluated as (!Exists('obj\debug-net20\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs')).
1>Task "WriteLinesToFile" skipped, due to false condition; (!Exists('$(GenerateCompiledExpressionsTempFilePathForValidation)')) was evaluated as (!Exists('obj\debug-net20\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs')).
1>Task "WriteLinesToFile" skipped, due to false condition; (!Exists('$(GenerateCompiledExpressionsTempFilePathForTypeInfer)')) was evaluated as (!Exists('obj\debug-net20\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs')).
1>Done building target "GenerateCompiledExpressionsTempFile" in project "XunitCrap.csproj".
1>Target "DesignTimeXamlMarkupCompilation" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreCompile" depends on it):
1>Task "MakeDir" skipped, due to false condition; ('@(XamlAppDef)' != '') was evaluated as ('' != '').
1>Task "CallTarget" skipped, due to false condition; ('$(BuildingProject)' != 'true' and '@(XamlAppDef)' != '') was evaluated as ('true' != 'true' and '' != '').
1>Done building target "DesignTimeXamlMarkupCompilation" in project "XunitCrap.csproj".
1>Target "CleanInProcessXamlGeneratedFiles" skipped, due to false condition; ('@(XamlAppDef)' != '') was evaluated as ('' != '').
1>Target "DesignTimeMarkupCompilation" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreCompile" depends on it):
1>Task "CallTarget" skipped, due to false condition; ('$(BuildingProject)' != 'true') was evaluated as ('true' != 'true').
1>Done building target "DesignTimeMarkupCompilation" in project "XunitCrap.csproj".
1>Target "_ComputeNonExistentFileProperty" skipped, due to false condition; (('$(BuildingInsideVisualStudio)' == 'true') and ('$(BuildingOutOfProcess)' != 'true') and (('$(BuildingProject)' == 'false') or ('$(UseHostCompilerIfAvailable)' == 'true'))) was evaluated as (('true' == 'true') and ('true' != 'true') and (('true' == 'false') or ('true' == 'true'))).
1>Target "PreXsdCodeGen" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.ServiceModel.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreCompile" depends on it):
1>Using "CallTarget" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "CallTarget"
1>Target "CleanXsdCodeGen" skipped. Previously built successfully.
1>Done executing task "CallTarget".
1>Done building target "PreXsdCodeGen" in project "XunitCrap.csproj".
1>Target "XsdCodeGen" skipped, due to false condition; ( '$(XsdCodeGenPreCondition)' == 'True' ) was evaluated as ( 'False' == 'True' ).
1>Target "CoreCompile" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.CSharp.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Building target "CoreCompile" completely.
1>Output file "obj\debug-net20\XunitCrap.dll" does not exist.
1>Using "Csc" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Csc"
1> C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\debug-net20\XunitCrap.dll /subsystemversion:6.00 /target:library /utf8output Class1.cs Properties\AssemblyInfo.cs "x:\temp\.NETFramework,Version=v4.5.AssemblyAttributes.cs" obj\debug-net20\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\debug-net20\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\debug-net20\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1> Microsoft (R) Visual C# Compiler version 12.0.31101.0
1>
1> for C# 5
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1>Done executing task "Csc".
1>Task "CallTarget" skipped, due to false condition; ('$(TargetsTriggeredByCompilation)' != '') was evaluated as ('' != '').
1>Done building target "CoreCompile" in project "XunitCrap.csproj".
1>Target "_TimeStampAfterCompile" skipped, due to false condition; ('$(RunPostBuildEvent)'=='OnOutputUpdated' or ('$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library')) was evaluated as (''=='OnOutputUpdated' or (''=='true' and 'Library'=='library')).
1>Target "AfterCompile" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Done building target "AfterCompile" in project "XunitCrap.csproj".
1>Target "CreateTfsBuildInfoResource" skipped, due to false condition; ( $(AddBuildInfoToAssembly)==true ) was evaluated as ( false==true ).
1>Target "CreateTfsBuildInfoFile" skipped, due to false condition; ( $(GenerateBuildInfoConfigFile)==true AND $(WebProjectOutputDir)!='') was evaluated as ( false==true AND !='').
1>Target "SetBuildInfoDefaults" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "DeleteBuildInfoFile" depends on it):
1>Done building target "SetBuildInfoDefaults" in project "XunitCrap.csproj".
1>Target "DeleteBuildInfoFile" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Task "Delete" skipped, due to false condition; (EXISTS('$(BuildInfoConfigFileName)')) was evaluated as (EXISTS(' x:\temp\XunitCrap\bin\Debug\XunitCrap.BuildInfo.config')).
1>Done building target "DeleteBuildInfoFile" in project "XunitCrap.csproj".
1>Target "SetBuildInfoDefaults" skipped. Previously built successfully.
1>Target "DeleteBuildInfoResource" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Task "Delete" skipped, due to false condition; (EXISTS('$(BuildInfoResourceFileName)')) was evaluated as (EXISTS(' obj\debug-net20\XunitCrap.BuildInfo.config')).
1>Done building target "DeleteBuildInfoResource" in project "XunitCrap.csproj".
1>Target "PrepareResourcesForSatelliteAssemblies" skipped, due to false condition; ('$(UICulture)' != '') was evaluated as ('' != '').
1>Target "MergeLocalizationDirectives" skipped, due to false condition; ('@(GeneratedLocalizationFiles)' !='') was evaluated as ('' !='').
1>Target "AfterCompileWinFX" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "_AfterCompileWinFXInternal" depends on it):
1>Done building target "AfterCompileWinFX" in project "XunitCrap.csproj".
1>Target "_AfterCompileWinFXInternal" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Done building target "_AfterCompileWinFXInternal" in project "XunitCrap.csproj".
1>Target "CreateCodeContractReferenceAssembly" skipped, due to false condition; ('$(TargetName)' != 'Microsoft.Contracts' and '$(CodeContractsReferenceAssembly)' == 'build') was evaluated as ('XunitCrap' != 'Microsoft.Contracts' and '' == 'build').
1>Target "CodeContractDummyReferenceAssembly" skipped, due to false condition; ('$(CodeContractsReferenceAssembly)' == 'doNotBuild') was evaluated as ('' == 'doNotBuild').
1>Target "CodeContractReferenceAssembly" in file "C:\Program Files (x86)\Microsoft\Contracts\MsBuild\v12.0\Microsoft.CodeContracts.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Compile" depends on it):
1>Done building target "CodeContractReferenceAssembly" in project "XunitCrap.csproj".
1>Target "Compile" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "Compile" in project "XunitCrap.csproj".
1>Target "DeferredValidation" skipped, due to false condition; ('$(SkipWorkflowValidation)' != 'true' and ('@(XamlPage)' != '' or '@(XamlAppDef)' != '')) was evaluated as ('' != 'true' and ('' != '' or '' != '')).
1>Target "ExportWindowsMDFile" skipped, due to false condition; ('$(ExportWinMDFile)' == 'true') was evaluated as ('' == 'true').
1>Target "UnmanagedUnregistration" skipped, due to false condition; ((('$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)' or '$(RegisterForComInterop)' != 'true' or '$(OutputType)' != 'library') or
1> ('$(_AssemblyTimestampBeforeCompile)' == '')) and
1> Exists('@(_UnmanagedRegistrationCache)')) was evaluated as ((('' != '' or '' != 'true' or 'Library' != 'library') or
1> ('' == '')) and
1> Exists('obj\XunitCrap.csproj.UnmanagedRegistration.cache')).
1>Target "GenerateSerializationAssemblies" skipped, due to false condition; ('$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')) was evaluated as ('Auto' == 'On' or (''!='' and 'Auto' == 'Auto')).
1>Target "_GenerateSatelliteAssemblyInputs" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CreateSatelliteAssemblies" depends on it):
1>Task "Warning" skipped, due to false condition; ('@(ManifestResourceWithCulture)'!='' and '%(ManifestResourceWithCulture.EmittedForCompatibilityOnly)'=='') was evaluated as (''!='' and ''=='').
1>Task "Warning" skipped, due to false condition; ('@(ManifestNonResxWithCultureOnDisk)'!='' and '%(ManifestNonResxWithCultureOnDisk.EmittedForCompatibilityOnly)'=='') was evaluated as (''!='' and ''=='').
1>Done building target "_GenerateSatelliteAssemblyInputs" in project "XunitCrap.csproj".
1>Target "ComputeIntermediateSatelliteAssemblies" skipped, due to false condition; (@(EmbeddedResource->'%(WithCulture)') != '') was evaluated as ( != '').
1>Target "GenerateSatelliteAssemblies" skipped, due to false condition; ('@(_SatelliteAssemblyResourceInputs)' != '') was evaluated as ('' != '').
1>Target "CreateSatelliteAssemblies" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "CreateSatelliteAssemblies" in project "XunitCrap.csproj".
1>Target "GenerateManifests" skipped, due to false condition; ('$(GenerateClickOnceManifests)'=='true' or '@(NativeReference)'!='' or '@(ResolvedIsolatedComModules)'!='' or '$(GenerateAppxManifest)' == 'true') was evaluated as (''=='true' or ''!='' or ''!='' or '' == 'true').
1>Target "GetTargetPath" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "GetTargetPath" in project "XunitCrap.csproj".
1>Target "ComputeIntermediateSatelliteAssemblies" skipped, due to false condition; (@(EmbeddedResource->'%(WithCulture)') != '') was evaluated as ( != '').
1>Target "_CopyFilesMarkedCopyLocal" skipped, due to false condition; ('@(ReferenceCopyLocalPaths)' != '') was evaluated as ('' != '').
1>Target "AssignTargetPaths" skipped. Previously built successfully.
1>Target "_SplitProjectReferencesByFileExistence" skipped. Previously built successfully.
1>Target "GetCopyToOutputDirectoryXamlAppDefs" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "GetCopyToOutputDirectoryItems" depends on it):
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Done building target "GetCopyToOutputDirectoryXamlAppDefs" in project "XunitCrap.csproj".
1>Target "GetCopyToOutputDirectoryItems" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "_CopySourceItemsToOutputDirectory" depends on it):
1>Task "MSBuild" skipped, due to false condition; ('@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToOutputDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false' and '$(UseCommonOutputDirectory)' != 'true') was evaluated as ('' != '' and 'true' == 'true' and '' != 'false' and 'false' != 'true').
1>Task "AssignTargetPath"
1>Done executing task "AssignTargetPath".
1>Done building target "GetCopyToOutputDirectoryItems" in project "XunitCrap.csproj".
1>Target "_CopyOutOfDateSourceItemsToOutputDirectory" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "_CopySourceItemsToOutputDirectory" depends on it):
1>Building target "_CopyOutOfDateSourceItemsToOutputDirectory" completely.
1>Output file "bin\Debug\xunit.runner.visualstudio.testadapter.dll" does not exist.
1>Output file "bin\Debug\xunit.runner.utility.desktop.dll" does not exist.
1>Output file "bin\Debug\xunit.abstractions.dll" does not exist.
1>Using "Copy" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Copy"
1> Copying file from "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\_common\xunit.runner.visualstudio.testadapter.dll" to "bin\Debug\xunit.runner.visualstudio.testadapter.dll".
1> Copying file from "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\_common\xunit.runner.utility.desktop.dll" to "bin\Debug\xunit.runner.utility.desktop.dll".
1> Copying file from "x:\temp\XunitCrap\packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build\_common\xunit.abstractions.dll" to "bin\Debug\xunit.abstractions.dll".
1>Done executing task "Copy".
1>Done building target "_CopyOutOfDateSourceItemsToOutputDirectory" in project "XunitCrap.csproj".
1>Target "_CopyOutOfDateSourceItemsToOutputDirectoryAlways" skipped, due to false condition; ( '@(_SourceItemsToCopyToOutputDirectoryAlways)' != '' ) was evaluated as ( '' != '' ).
1>Target "_CopySourceItemsToOutputDirectory" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CopyFilesToOutputDirectory" depends on it):
1>Done building target "_CopySourceItemsToOutputDirectory" in project "XunitCrap.csproj".
1>Target "_CopyAppConfigFile" skipped, due to false condition; ( '@(AppConfigWithTargetPath)' != '' ) was evaluated as ( '' != '' ).
1>Target "_CopyManifestFiles" skipped, due to false condition; ( '$(_DeploymentCopyApplicationManifest)'=='true' or '$(GenerateClickOnceManifests)'=='true' ) was evaluated as ( ''=='true' or ''=='true' ).
1>Target "_CheckForCompileOutputs" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CopyFilesToOutputDirectory" depends on it):
1>Done building target "_CheckForCompileOutputs" in project "XunitCrap.csproj".
1>Target "_SGenCheckForOutputs" skipped, due to false condition; ('$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')) was evaluated as ('Auto' == 'On' or (''!='' and 'Auto' == 'Auto')).
1>Target "CopyFilesToOutputDirectory" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "PrepareForRun" depends on it):
1>Task "Copy"
1> Copying file from "obj\debug-net20\XunitCrap.dll" to "bin\Debug\XunitCrap.dll".
1>Done executing task "Copy".
1>Task "Message"
1> XunitCrap -> x:\temp\XunitCrap\bin\Debug\XunitCrap.dll
1>Done executing task "Message".
1>Task "Copy" skipped, due to false condition; ('@(AddModules)' != '') was evaluated as ('' != '').
1>Task "Copy" skipped, due to false condition; ('$(_SGenDllCreated)'=='true') was evaluated as ('false'=='true').
1>Task "Copy"
1> Copying file from "obj\debug-net20\XunitCrap.pdb" to "bin\Debug\XunitCrap.pdb".
1>Done executing task "Copy".
1>Task "Copy" skipped, due to false condition; ('$(_DocumentationFileProduced)'=='true') was evaluated as ('false'=='true').
1>Task "Copy" skipped, due to false condition; ('@(IntermediateSatelliteAssembliesWithTargetPath)' != '') was evaluated as ('' != '').
1>Task "Copy" skipped, due to false condition; ('@(ReferenceComWrappersToCopyLocal)' != '' or '@(ResolvedIsolatedComModules)' != '' or '@(_DeploymentLooseManifestFile)' != '' or '@(NativeReferenceFile)' != '' ) was evaluated as ('' != '' or '' != '' or '' != '' or '' != '' ).
1>Task "Copy" skipped, due to false condition; ('$(SkipCopyWinMDArtifact)' != 'true' and '@(WinMDExpArtifacts)' != '') was evaluated as ('' != 'true' and '' != '').
1>Task "Message" skipped, due to false condition; ('$(SkipCopyWinMDArtifact)' != 'true' and '$(_WindowsMetadataOutputPath)' != '') was evaluated as ('' != 'true' and '' != '').
1>Done building target "CopyFilesToOutputDirectory" in project "XunitCrap.csproj".
1>Target "RunCodeAnalysis" skipped, due to false condition; ('$(RunCodeAnalysisOnThisProject)'=='true') was evaluated as (''=='true').
1>Target "CodeContractsRunCodeAnalysisOnTarget" skipped, due to false condition; ('$(ProjectGuid)' != '' and '$([System.Environment]::GetEnvironmentVariable(`CodeContractsTargetProjectGuid`))' == '$(ProjectGuid)') was evaluated as ('{2E63521D-908E-42BC-BB7D-C7D78F8F055E}' != '' and '' == '{2E63521D-908E-42BC-BB7D-C7D78F8F055E}').
1>Target "CodeContractsPerformCodeAnalysis" skipped, due to false condition; ('$(CodeContractsRunCodeAnalysis)' == 'true') was evaluated as ('' == 'true').
1>Target "PrepareForRun" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Done building target "PrepareForRun" in project "XunitCrap.csproj".
1>Target "UnmanagedRegistration" skipped, due to false condition; ('$(RegisterForComInterop)'=='true' and '$(OutputType)'=='library') was evaluated as (''=='true' and 'Library'=='library').
1>Target "_CheckForCompileOutputs" skipped. Previously built successfully.
1>Target "_SGenCheckForOutputs" skipped, due to false condition; ('$(_SGenGenerateSerializationAssembliesConfig)' == 'On' or ('@(WebReferenceUrl)'!='' and '$(_SGenGenerateSerializationAssembliesConfig)' == 'Auto')) was evaluated as ('Auto' == 'On' or (''!='' and 'Auto' == 'Auto')).
1>Target "_CleanGetCurrentAndPriorFileWrites" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "IncrementalClean" depends on it):
1>Task "ReadLinesFromFile"
1>Done executing task "ReadLinesFromFile".
1>Using "ConvertToAbsolutePath" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "ConvertToAbsolutePath"
1>Done executing task "ConvertToAbsolutePath".
1>Task "FindUnderPath"
1> Comparison path is "x:\temp\XunitCrap".
1>Done executing task "FindUnderPath".
1>Task "FindUnderPath"
1> Comparison path is "bin\Debug\".
1>Done executing task "FindUnderPath".
1>Task "FindUnderPath"
1> Comparison path is "obj\debug-net20\".
1>Done executing task "FindUnderPath".
1>Task "RemoveDuplicates"
1>Done executing task "RemoveDuplicates".
1>Done building target "_CleanGetCurrentAndPriorFileWrites" in project "XunitCrap.csproj".
1>Target "IncrementalClean" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "CoreBuild" depends on it):
1>Task "FindUnderPath"
1> Comparison path is "bin\Debug\".
1>Done executing task "FindUnderPath".
1>Task "FindUnderPath"
1> Comparison path is "obj\debug-net20\".
1>Done executing task "FindUnderPath".
1>Task "Delete"
1>Done executing task "Delete".
1>Task "RemoveDuplicates"
1>Done executing task "RemoveDuplicates".
1>Task "WriteLinesToFile"
1>Done executing task "WriteLinesToFile".
1>Done building target "IncrementalClean" in project "XunitCrap.csproj".
1>Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '' and ('$(RunPostBuildEvent)' != 'OnOutputUpdated' or '$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)')) was evaluated as ('' != '' and ('' != 'OnOutputUpdated' or '' != '')).
1>Target "CoreBuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Build" depends on it):
1>Done building target "CoreBuild" in project "XunitCrap.csproj".
1>Target "CreateTfsBuildInfoResource" skipped, due to false condition; ( $(AddBuildInfoToAssembly)==true ) was evaluated as ( false==true ).
1>Target "AfterBuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Build" depends on it):
1>Done building target "AfterBuild" in project "XunitCrap.csproj".
1>Target "TouchWinMDFile" skipped, due to false condition; ('$(Language)' == 'C++') was evaluated as ('C#' == 'C++').
1>Target "Build" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Rebuild" depends on it):
1>Done building target "Build" in project "XunitCrap.csproj".
1>Target "AfterRebuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (target "Rebuild" depends on it):
1>Done building target "AfterRebuild" in project "XunitCrap.csproj".
1>Target "Rebuild" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "x:\temp\XunitCrap\XunitCrap.csproj" (entry point):
1>Done building target "Rebuild" in project "XunitCrap.csproj".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.12
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Build Summary
-------------
00:00.553 - Success - debug-net20 Any CPU - XunitCrap.csproj
Total build time: 00:00.553
========== Rebuild All: 1 succeeded or up-to-date, 0 failed, 0 skipped, Completed at 26/1/2015 19:45:36 ==========
While VS doesn't show that it is importing the file propely, you can see that the XUnit files are being copied (if you inspect the build log), and you can also see that the error condition, is evaluated properly:
1>Task "Error" skipped, due to false condition; (!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\$(__xunit_runner_visualstudio_prop_path)')) was evaluated as (!Exists('packages\xunit.runner.visualstudio.2.0.0-rc1-build1030\build/portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid/xunit.runner.visualstudio.props')).
Ok, so let's make this a thing
I'm starting to work on this. What are important packages with props or targets files?
https://www.nuget.org/packages/StyleCop.MSBuild/ is a very popular one.

@damageboy something like this?
Just saw this, gitsharp2, sqlite, xunit
the feature is available as an alpha release. please try it out.

I think something is going wrong with this on mono/MacOS: https://travis-ci.org/fsharp/FsCheck/builds/49381145
When I switched paket to latest stable the build works.
could please describe what I need to do to reproduce`? thanks
I don't have mono or mac, so the travis build is always a bit of a mystery to me. Luckily usually it just works.
Anyway, my informed guess is:
My guess is something is going wrong while the xunit.runners package is adding stuff to the project file that xbuild reacts badly to, but msbuild somehow works. It's also possible that this "error" is really a "warning" that gets escalated because I have warnings as errors turned on. But in any case it seems to indicate something is going wrong with the install.
If you want to use FsCheck as a repro, you should be able to checkout on a mac machine, change build.sh to include the prerelease flag on the paket bootstrapper again, and run build.sh. See my latest change on FsCheck master.
If you need access somehow to the FsCheck travis build settings or whatever, happy to set that up.
It seems the issue is that there is no support of xunit.runner.visualstudio for mono, so the string inside Project is empty (see https://github.com/fsharp/FsCheck/pull/84/files#diff-4a411ad68b471be986e808943b0a911aR123)
we need to come up with a default value. @devboy ideas?
@forki Just saw this, I think you mean to mention me, but used @devboy ?
I'll look into this...
lol. sorry.
the trick in https://github.com/fsharp/FsCheck/pull/84/files#diff-4a411ad68b471be986e808943b0a911aR123 seems to work.
@forki yeah, that was kind of what I was about to say... the standard NuGet way of things is to shove those Condition/Exists things. Ugly, but should work.
ok latest version LGTM. I still need some +1 or :shipit:'s for the release
@forki One issue though...
You seem to be importing only .targets files.
When I use paket (just now, the latest alpha) to install LibGitSharp, I get the import for the .targets file, which libgitsharp doesn't provide, but not the import for the .props file (which it does provide...)
please try alpha10
@forki
One more issue...
The imports should always be into the build subdir:
<Import Project="..\..\packages\LibGit2Sharp\$(__paket__LibGit2Sharp_props).targets" ...
Should actually be:
<Import Project="..\..\packages\LibGit2Sharp\build\$(__paket__LibGit2Sharp_props).targets"
@forki
The .props thing looks better with alpha010
and we have alpha012...
@forki Looks good! (with alpha 012)
I'll try with SQLite since I know they have both .targets + .props in the same package...
Should that work? Or should I wait for alpha 013? :smile:
I hope it works.
@forki, wait, I think there has been a terrible mistake here...
I've been looking at the resulting msbuild files, but wasn't testing the actual result here...
I don't think it's actually doing the Imports as-of-now.
Let me dig deeper, and I'll report back
@forki I've found the error(s)..
You seem to be using ONE condition for both the reference and the __paket_* properties.
i.e. your resulting .csproj looks something like:
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch')">
<ItemGroup>
<Reference Include="XXX">
<HintPath>..\..\packages\XXX\lib\net40\XXX.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
</ItemGroup>
</When>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhone') Or ($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'Silverlight') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')) Or ($(TargetFrameworkProfile) == 'Profile2') Or ($(TargetFrameworkProfile) == 'Profile3') Or ($(TargetFrameworkProfile) == 'Profile4') Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile18') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile23') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile36') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile41') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile46') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile88') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile95') Or ($(TargetFrameworkProfile) == 'Profile96') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile104') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile143') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile154') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile259') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
<PropertyGroup>
<__paket__XXX_targets>XXX</__paket__XXX_targets>
</PropertyGroup>
</When>
</Choose>
<Import Project="..\..\packages\XXX\build\$(__paket__XXX_targets).targets"/>
This is a problem since the condition for the Reference block is true, therefore it will never select the second "When" condition, and the property group will not be evaluated, and therefore the Import will bomb (or silently not happen).
So the first thing I did was to manually separate your big <Choose> with two <When> blocks, to two <Choose> blocks with one <When> block each.
After I did that, the code looked like this:
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhone') Or ($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'Silverlight') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')) Or ($(TargetFrameworkProfile) == 'Profile2') Or ($(TargetFrameworkProfile) == 'Profile3') Or ($(TargetFrameworkProfile) == 'Profile4') Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile18') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile23') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile36') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile41') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile46') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile88') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile95') Or ($(TargetFrameworkProfile) == 'Profile96') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile104') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile143') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile154') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile259') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
<PropertyGroup>
<__paket__XXX_targets>XXX</__paket__XXX_targets>
</PropertyGroup>
</When>
</Choose>
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch')">
<ItemGroup>
<Reference Include="XXX">
<HintPath>..\..\packages\XXX\lib\net40\XXX.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
</ItemGroup>
</When>
</Choose>
<Import Project="..\..\packages\XXX\build\$(__paket__XXX_targets).targets"/>
This did not work either, because the condition for the .NETFramework included only versions v1.0 - v3.5
($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5'))
I think this is some sort of a weird artifact of having these two <When> conditions on the same <Choose> Block...
Once I manually fixed this:
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhone') Or ($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'Silverlight') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5') Or ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkProfile) == 'Profile2') Or ($(TargetFrameworkProfile) == 'Profile3') Or ($(TargetFrameworkProfile) == 'Profile4') Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile18') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile23') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile36') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile41') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile46') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile88') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile95') Or ($(TargetFrameworkProfile) == 'Profile96') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile104') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile143') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile154') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile259') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
<PropertyGroup>
<__paket__XXX_targets>XXX</__paket__XXX_targets>
</PropertyGroup>
</When>
</Choose>
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch')">
<ItemGroup>
<Reference Include="XXX">
<HintPath>..\..\packages\XXX\lib\net40\XXX.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
</ItemGroup>
</When>
</Choose>
<Import Project="..\..\packages\XXX\build\$(__paket__XXX_targets).targets"/>
Everything works.
Now...
Having seen all of this,
I think that if there is only one top-level .targets / .props file under the build/ directory in the NuGet package, there really is no sense/need in including every possible framework version / profile comination, and it would just make better sense to have to following fragment (FOR THOSE CASES ONLY!):
<Import Project="..\..\packages\XXX\build\XXX.targets"/>
Does this make sense to you?
It absolutely makes sense. I'll try to fix it.
The optimization in the single condition case will be done later.
could you please test alpha013? And which nuget package are you testing?
@forki : Better, with alpha 014, but not there yet:
<Choose>
<When Condition="($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch')" />
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhone') Or ($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == 'Silverlight') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')) Or ($(TargetFrameworkProfile) == 'Profile2') Or ($(TargetFrameworkProfile) == 'Profile3') Or ($(TargetFrameworkProfile) == 'Profile4') Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile18') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile23') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile36') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile41') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile46') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile88') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile95') Or ($(TargetFrameworkProfile) == 'Profile96') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile104') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile143') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile154') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile259') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
<PropertyGroup>
<__paket__XXX_targets>XXX</__paket__XXX_targets>
</PropertyGroup>
</When>
</Choose>
There are still two <When> blocks, only one of them is completely empty, i.e. <When .../>
You seen to be using the same "split" you've learned from the lib/ folder for the build/ folder, which is wrong... The folder under build/ could have an entirely different structure from what goes under lib/, more-over, certain packages could even NOT have a lib/ folder, but only a build/ one, even if it seems contrived
@forki I'm using this in a large, project, let me repro with something small and silly...
I meant: which nuget package are you referencing.
@forki One of my horrible ones:
https://www.nuget.org/packages/GitInfoPlanter/
Yep. Seems we have to duplicate the libfolder logic
the latest version of GitInfoPlanter doesn't hav a lib folder!?
Anyways, I splitted the path discovery in alpha015 and get:
<PropertyGroup>
<__paket__GitInfoPlanter_targets>GitInfoPlanter</__paket__GitInfoPlanter_targets>
</PropertyGroup>
<Import Project="..\..\packages\GitInfoPlanter\build\$(__paket__GitInfoPlanter_targets).targets" Condition="Exists('..\..\packages\GitInfoPlanter\build\$(__paket__GitInfoPlanter_targets).targets')" />
Please manually remove the stuff from the last version and test the new one
I'm cleaning the mess of my refactoring....
@forki Well, yes, I wanted to prove my point to the extreme :smile:
Some packages, can be build-time packages only like GitInfoPlanter, Some are both.
Yes already had such a package as test. I'm looking for a package where lib
and build folders are not empty but out of sync.
On Feb 7, 2015 4:14 PM, "damageboy" [email protected] wrote:
@forki https://github.com/forki Well, yes, I wanted to prove my point
to the extreme [image: :smile:]
Some packages, can be build-time packages only like GitInfoPlanter, Some
are both.—
Reply to this email directly or view it on GitHub
https://github.com/fsprojects/Paket/issues/516#issuecomment-73368104.
@forki alpha 016 looks great. It's actually working.
I'll start testing it later tonight for:
And will report back, but it looks perfect at least on two different packages I've attempted...
@forki So I tested at least one like that but it's not public.
I'll make sure I test it, if I can find a public one I'll use that... and report it back here
Awesome. Thanks for your help and patience.
On Feb 7, 2015 4:21 PM, "damageboy" [email protected] wrote:
@forki https://github.com/forki So I tested at least one like that but
it's not public.
I'll make sure I test it, if I can find a public one I'll use that... and
report it back here—
Reply to this email directly or view it on GitHub
https://github.com/fsprojects/Paket/issues/516#issuecomment-73368383.
in alpha017 I implemented the following simplification:

argh. missed the ending.
fixed.
@forki I've tested alpha 018, so far:
So far so good
Are you interested in the resulting project? Do you want to me to make a repo out of it? for you to see the exact results?
@forki You can look at my "test" project:
https://github.com/damageboy/NuGetBuildTest
I'll be happy to take more requests for testing... but as far as I'm concerned, this is done...
very very cool. Thank you so much for your help.

... and releasing.
@forki Small bug in 0.27.0, when I run .paket/paket.exe install consecutively I get the simplified import (The one without the <Choose>) I get the imported inserted TWICE into the .csproj
I openend #585
We had trouble getting the tests to show up in Test Explorer. We had to copy the folder to the NuGet format to get it working. Anyone else?
https://github.com/xunit/visualstudio.xunit/issues/46
I added the workaround to our build.fsx:
let copyXunit() =
let path = @"packages\xunit.runner.visualstudio"
let nugetPath = @"packages\xunit.runner.visualstudio.2.0.0-rc2-build1043"
if Directory.Exists nugetPath = false then
CopyDir nugetPath path allFiles
@ctaggart Is the Import for XUnit vs runner showing up in your .csproj / .fsproj file?
@damageboy Yes, the import shows up. It looks like it imports the net20\xunit.runner.visualstudio.props which looks like it copies 3 xunit dlls to the output directory. They all show up in bin\debug:

.fsproj section:
<Choose>
<When Condition="$(TargetFrameworkIdentifier) == '.NETCore'">
<PropertyGroup>
<__paket__xunit_runner_visualstudio_props>win8\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
<__paket__xunit_runner_visualstudio_targets>win8\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_targets>
</PropertyGroup>
</When>
<When Condition="$(TargetFrameworkIdentifier) == 'WindowsPhoneApp'">
<PropertyGroup>
<__paket__xunit_runner_visualstudio_props>wpa81\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
<__paket__xunit_runner_visualstudio_targets>wpa81\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_targets>
</PropertyGroup>
</When>
<When Condition="($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5' Or $(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3')) Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch')">
<PropertyGroup>
<__paket__xunit_runner_visualstudio_props>net20\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
</PropertyGroup>
</When>
<When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
<PropertyGroup>
<__paket__xunit_runner_visualstudio_props>portable-net45+aspnetcore50+win+wpa81+wp80+monotouch+monoandroid\xunit.runner.visualstudio</__paket__xunit_runner_visualstudio_props>
</PropertyGroup>
</When>
</Choose>
<Import Project="..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_props).props" Condition="Exists('..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_props).props')" Label="Paket" />
<Import Project="..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_targets).targets" Condition="Exists('..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_targets).targets')" Label="Paket" />
net20xunit.runner.visualstudio.props
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)..\_common\xunit.runner.visualstudio.testadapter.dll">
<Link>xunit.runner.visualstudio.testadapter.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\_common\xunit.runner.utility.desktop.dll">
<Link>xunit.runner.utility.desktop.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\_common\xunit.abstractions.dll">
<Link>xunit.abstractions.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</Content>
</ItemGroup>
</Project>
for comparison, here is the section when added by NuGet:
<Import Project="..\..\packages\xunit.runner.visualstudio.2.0.0-rc2-build1043\build\net20\xunit.runner.visualstudio.props" Condition="Exists('..\..\packages\xunit.runner.visualstudio.2.0.0-rc2-build1043\build\net20\xunit.runner.visualstudio.props')" />
So <Import> wise it looks fine.
What are you expecting to see that you weren't seeing then?
@damageboy I was expecting our xUnit tests to show up in Visual Studio Test Explorer. They do not unless I copy the folder. It isn't just my machine that behaves this way.
@ctaggart Can you provide a screenshot of how that looks, I'm sorry for the stupid questions, I'm a R# user, and I honestly don't know what / where to look for this. Forgive my stupidity
Here is a basic test library using xUnit 1 and the xunit.runner.visualstudio 2 prerelease via NuGet. Test Explorer is on the left showing the single test.

I can confirm I see the same. I did not notice because I still had the NuGet installed folder in packages from before...once you copy folder with version in packages it all works.
Conversion from NuGet leaves following lines:
<Import Project="..\packages\xunit.core.2.0.0\build\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.props" Condition="Exists('..\packages\xunit.core.2.0.0\build\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.props')" />
<Import Project="..\packages\xunit.runner.visualstudio.2.0.0\build\net20\xunit.runner.visualstudio.props" Condition="Exists('..\packages\xunit.runner.visualstudio.2.0.0\build\net20\xunit.runner.visualstudio.props')" />
which would explain why keeping the NuGet folder around keeps xUnit tests visible to the explorer.
@ctaggart is that the same issue that you had?
/cc @theimowski
convert does not currently detect such Imports - do you think we could just remove lines with $package.$version in the Import path?
I can confirm the same issue, test explorer shows 0 tests, I do have the 3 dlls mentioned above copied to my output dir, and I do have the following import at the end of my proj file:
<Import Project="..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_props).props" Condition="Exists('..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_props).props')" Label="Paket" />
<Import Project="..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_targets).targets" Condition="Exists('..\..\packages\xunit.runner.visualstudio\build\$(__paket__xunit_runner_visualstudio_targets).targets')" Label="Paket" />
I don't speak msbuild fluently enough to have even the faintest Idea of how this is supposed to work...
I guess @bradwilson is the only one who knows, but he closed the xunit issue ;-)
I experimented a little bit today, and found out that this issue is neither Paket's nor xunit's fault. It's Visual Studio's.
I don't know exactly how VS discovers Test-Runner-Packages, but at the end it simply copies the unpacked folder of the package to %temp%\VisualStudioTestExplorerExtensions, where it stays forever. But if the folder doesn't follow the naming convention package.version, it fails to find it. Also, it doesn't show any tests, even if this runner has been installed before. Seems like VS doesn't load the extension at all. The same problem comes up with NUnitTestAdapter, BTW.
With Visual Studio 2012 Update 4 + old-school .NET 4.5 Class Library Project + xunit 2.0.0 + xunit.runner.visualstudio 2.0.0, I was able to find and run a test, after renaming the folder to package.version instead of just package. Again, same with NUnitTestAdapter.
Fun fact: It seems like we don't actually need to add the runner to paket.references. At least with xunit 2.0.0 and NUnit 2.6.3. Don't know about any other Test-Framework/Target-Framework combination.
Maybe we could solve this with a new option for paket.dependencies? Something like unpack_with_version: true? Of course, then the user should be warned that this is evil.
I can confirm what @inosik says. Rename the package folder to package.version and the package shows up in the aforementioned temp folder, and xunit works. Very unclear how Visual Studio actually determines which package to copy from the packages folder; it's possible it scans it for appropriate assemblies, but skips folders that it does not consider to be proper package folders (e.g if they don't end in a version string).
This is really bad. I have no idea how to fix that with our normal
workflow.
On Apr 25, 2015 8:08 PM, "Kurt Schelfthout" [email protected]
wrote:
I can confirm what @inosik https://github.com/inosik says. Rename the
package file to package.version and the package shows up in the
aforementioned temp folder, and xunit works. Very unclear how Visual Studio
actually determines which package to copy from the packages folder; it's
possible it scans it for appropriate assemblies, but skips folders that it
does not consider to be proper package folders (e.g if they don't end in a
version string).—
Reply to this email directly or view it on GitHub
https://github.com/fsprojects/Paket/issues/516#issuecomment-96250038.
It is bad. Is the fact that there are no version numbers in the packages folder a core element of paket? I don't understand all the implications of not doing that for some packages.
Further testing of the behavior with procmon shows that for the unversioned folder, it scans the nuspec file, the nupkg file, and then stops. For the version folder, devenv scans nuspec, nupkg, and then continues to search recursively for files ending in .TestAdapter.dll (I kid you not.). So that may be a ray of hope: potentially paket could make this automagical for testadapters by scanning the packages folder similarly, and adding the version number if it finds a TestAdapter.dll.
This drives me nuts! Running vstest.console.exe /listdiscoverers /TestAdapterPath:packages from the root of the project, with just the unversioned paket xunit.runner.visualstudio folder works! That is, in the list the xunit runner shows and I can run the xunit tests. Why it doesn't work from within devenv could actually be considered a bug in Visual Studio, in my opinion - there is probably some pre-discover phase in devenv that looks in packages and copies to temp, then that is passed in as the path to TestAdapterPath or some such which is the "real" discover phase.
Anyway, another option is to add a directory junction,
C:\Users\Kurt\Projects\FsCheck\fsharp\packages>mklink /J xunit.runner.visualstudio.2.0.0 xunit.runner.visualstudio
Junction created for xunit.runner.visualstudio.2.0.0 <<===>> xunit.runner.visual
studio
I've tested that that works.
This sounds very much like a bug with VS, but I wouldn't hold out much hope for it being fixed any time soon. I see the same behaviour with the standard VS test runner with XUnit nowadays, but the CodeRush test runner identifies the tests no problem.
I wonder if this works with VS2015.
Could you please file a msconnect issue. Since ms is pushing xunit I think
they should fix that file pattern in VS.
On Apr 26, 2015 1:19 AM, "Isaac Abraham" [email protected] wrote:
This sounds very much like a bug with VS, but I wouldn't hold out much
hope for it being fixed any time soon. I see the same behaviour with the
standard VS test runner with XUnit nowadays, but the CodeRush test runner
identifies the tests no problem.I wonder if this works with VS2015.
—
Reply to this email directly or view it on GitHub
https://github.com/fsprojects/Paket/issues/516#issuecomment-96291727.
Is there any workarround known?
Okay, there is a workarround. Install XUnit via paket, but the runner via nuget. Not pretty, but works in VisualStudio and in VSO Build VNext.
Make sure you delete the previous imported EnsurePackage target of nuget for XUnit.runner
Rename the folder manually to how NuGet would have called it is another workaround. You can keep using paket.
Here is a cross platform target you can add to a project file to do that:
<Target Name="BeforeBuild">
<ItemGroup>
<xunitrunner Include="$(ProjectDir)..\..\packages\xunit.runner.visualstudio\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(xunitrunner)" DestinationFolder="$(ProjectDir)..\..\packages\xunit.runner.visualstudio.2.0.0\%(RecursiveDir)" SkipUnchangedFiles="true" />
</Target>
I wonder if it makes sense to inject this snippet automatically by paket.
At least until we find a better way
On Jun 25, 2015 3:13 PM, "Kurt Schelfthout" [email protected]
wrote:
Rename the folder manually to how NuGet would have called it is another
workaround. You can keep using paket.Here is a cross platform target you can add to a project file to do that:
Include="$(ProjectDir)..\..\packages\xunit.runner.visualstudio\**\*.*" />
DestinationFolder="$(ProjectDir)..\..\packages\xunit.runner.visualstudio.2.0.0\%(RecursiveDir)"
SkipUnchangedFiles="true" />
—
Reply to this email directly or view it on GitHub
https://github.com/fsprojects/Paket/issues/516#issuecomment-115252424.
I'm tentatively pro - esp. since it's dependent on the version of the package (i.e. I expect when xunit.runners updates I'll have to change this manually, which paket could automate).
do you have a sample project where you got that target working?
mhm I only see FsCheck.MsTest.Examples in the Text Explorer.
Just tested on clean machine...is the versioned xunit.runners. visualstudio folder showing up in packages?
yes the packages folder with version is there (so the target works), but test runner is not happy.
Does it show up in %temp%VisualStudioTestExplorerExtensions ? Try rebuilding the solution...restarting VS...
This is a hassle to get to work at best, even with standard NuGet installation. We've been having lots of issues with it (independent of paket) to the point where we're about to give up xunit. What is wrong with a VS plugin anyway?
That said, it's possible we're still missing something here...but I don't know what in that case :(
I cant find a "VisualStudioTestExplorerExtensions" folder on my machine. Restated, rebuild, restartet... nothing works.
That sucks. Can you get it to work if you install the nuget package?
After spending a few hours on this again with Visual Studio 2015, I came to the conclusion that
1) VisualStudioTestExplorerExtensions only work with NuGet

2) The project files do not need to be modified. A project simply needs a NuGet packages.config with the following entry:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="xunit.runner.visualstudio" version="2.0.1" />
</packages>
3) Paket would be better served if it was simply able to create these files. Perhaps a new packages_config option. In paket.dependencies, you would put:
nuget xunit.runner.visualstudio packages_config: true
When Paket does an install, it would create/modify the packages.config files to include the above entry if it is referenced in paket.references.
As @biohazard999 mentioned earlier, the only working workaround for now is to "install XUnit via paket, but the runner via nuget". And by "install", all you need to do is create the above packages.config file in one of your projects.
Ok I tried it at https://github.com/gsscoder/commandline/pull/205.
<Target Name="CopyXUnit" BeforeTargets="PrepareForBuild">
<ItemGroup>
<xunitrunner Include="$(ProjectDir)..\..\packages\xunit.runner.visualstudio\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(xunitrunner)" DestinationFolder="$(ProjectDir)..\..\packages\xunit.runner.visualstudio.2.0.1\%(RecursiveDir)" SkipUnchangedFiles="true" />
</Target>
plus
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="xunit.runner.visualstudio" version="2.0.1" />
</packages>
seems to be enough to make it work. No separate Nuget install needed.
I decided to solve it with https://github.com/fsprojects/Paket/pull/928
That's actually really strange that some of you need a packages.config. The last time I tested on my machine at work and literally right now on my MacBook (Windows 8.1 Pro, VS 2013 Community), it magically worked, after appending the version to the unpacked folder.
The version workaround works in VS 2013, but not VS 2015. Using packages.config works for both VS 2013 and VS 2015. @forki, make sure you test with VS 2015.
Paket 1.21.0-alpha001 seems to work with VS2013 and VS2015 now.
As describe in https://github.com/fsprojects/Paket/pull/928 we allow to put the version no. into the path. For such packages we will also generate a packages.config file.
Docs: http://fsprojects.github.io/Paket/nuget-dependencies.html#Putting-the-version-no-into-the-path
Please test like crazy and report bugs.
This is now released. See https://github.com/gsscoder/commandline/pull/206 for a sample
I confirmed that this works. Great work!
paket.dependencies
nuget xunit.runner.visualstudio version_in_path: true
paket.references
xunit.runner.visualstudio
paket install creates a packages.config. Add it to the repo.
:+1:
I seem to be having trouble setting breakpoints in tests themselves (in VS2015) with this fix. Has anyone tested that? Breakpoints seem to work fine in the tested code.
Most helpful comment
I confirmed that this works. Great work!
paket.dependencies
paket.references
paket installcreates apackages.config. Add it to the repo.