public void DoesNotImportDirectoryBuildProjectIfNotExist() { // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, @" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); Assert.Equal("true", project.GetPropertyValue(ImportDirectoryBuildProjectPropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue(DirectoryBuildProjectBasePathPropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(DirectoryBuildProjectFile, project.GetPropertyValue(DirectoryBuildProjectFilePropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue(DirectoryBuildProjectPathPropertyName)); }
public void DoesNotImportDirectoryBuildProjectWhenDisabled() { // --------------------- // Directory.Build.props // --------------------- ObjectModelHelpers.CreateFileInTempProjectDirectory(DirectoryBuildProjectFile, BasicDirectoryBuildProjectContents); // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, $@" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <PropertyGroup> <{ImportDirectoryBuildProjectPropertyName}>false</{ImportDirectoryBuildProjectPropertyName}> </PropertyGroup> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); Assert.Equal("false", project.GetPropertyValue(ImportDirectoryBuildProjectPropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue("WasDirectoryBuildProjectImported"), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue(DirectoryBuildProjectBasePathPropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue(DirectoryBuildProjectFilePropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal(String.Empty, project.GetPropertyValue(DirectoryBuildProjectPathPropertyName)); }
public void ImportsDirectoryBuildProjectCustomFile() { string customFilePath = ObjectModelHelpers.CreateFileInTempProjectDirectory(CustomBuildProjectFile, BasicDirectoryBuildProjectContents); // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, $@" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <PropertyGroup> <{DirectoryBuildProjectPathPropertyName}>{customFilePath}</{DirectoryBuildProjectPathPropertyName}> </PropertyGroup> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); Assert.Equal("true", project.GetPropertyValue(ImportDirectoryBuildProjectPropertyName), StringComparer.OrdinalIgnoreCase); Assert.Equal("true", project.GetPropertyValue("WasDirectoryBuildProjectImported"), StringComparer.OrdinalIgnoreCase); Assert.Equal(customFilePath, project.GetPropertyValue(DirectoryBuildProjectPathPropertyName)); }
public void DoesNotImportProjectWhenDisabled() { // --------------------- // Directory.Build.props // --------------------- ObjectModelHelpers.CreateFileInTempProjectDirectory(ImportProjectPath, BasicProjectImportContents); // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, $@" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <PropertyGroup> <{PropertyNameToEnableImport}>false</{PropertyNameToEnableImport}> </PropertyGroup> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); string projectExtensionsDirectory = Path.Combine(ObjectModelHelpers.TempProjectDir, Path.GetDirectoryName(ImportProjectPath)); project.GetPropertyValue(PropertyNameToEnableImport).ShouldBe("false"); project.GetPropertyValue(PropertyNameToSignalImportSucceeded).ShouldBeEmpty(); Directory.Exists(projectExtensionsDirectory).ShouldBeTrue(); project.GetPropertyValue("MSBuildProjectExtensionsPath").ShouldBe($@"{projectExtensionsDirectory}{Path.DirectorySeparatorChar}"); }
public void DoesNotImportProjectIfNotExist() { // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, @" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); string projectExtensionsPath = project.GetPropertyValue("MSBuildProjectExtensionsPath"); projectExtensionsPath.ShouldNotBeNullOrWhiteSpace(); Directory.Exists(projectExtensionsPath).ShouldBeFalse(); project.GetPropertyValue(PropertyNameToEnableImport).ShouldBe("true"); project.GetPropertyValue(PropertyNameToSignalImportSucceeded).ShouldBeEmpty(); }
public void WarningIfBaseIntermediateOutputPathIsChangedInBodyOfProject() { Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, @" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <PropertyGroup> <EnableBaseIntermediateOutputPathMismatchWarning>true</EnableBaseIntermediateOutputPathMismatchWarning> <BaseIntermediateOutputPath>foo</BaseIntermediateOutputPath> </PropertyGroup> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); MockLogger logger = new MockLogger(); project.Build("_CheckForInvalidConfigurationAndPlatform", new[] { logger }).ShouldBeTrue(); logger.Warnings.Select(i => i.Code).FirstOrDefault().ShouldBe("MSB3539"); }
public void ErrorIfChangedInBodyOfProject() { Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, @" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <PropertyGroup> <MSBuildProjectExtensionsPath>foo</MSBuildProjectExtensionsPath> </PropertyGroup> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); MockLogger logger = new MockLogger(); project.Build("_CheckForInvalidConfigurationAndPlatform", new[] { logger }).ShouldBeFalse(); logger.Errors.Select(i => i.Code).FirstOrDefault().ShouldBe("MSB3540"); }
public void ImportsProjectIfExists() { ObjectModelHelpers.CreateFileInTempProjectDirectory(ImportProjectPath, BasicProjectImportContents); // --------------------- // src\Foo\Foo.csproj // --------------------- Project project = ObjectModelHelpers.LoadProjectFileInTempProjectDirectory(ObjectModelHelpers.CreateFileInTempProjectDirectory(_projectRelativePath, @" <Project DefaultTargets=`Build` ToolsVersion=`msbuilddefaulttoolsversion` xmlns=`http://schemas.microsoft.com/developer/msbuild/2003`> <Import Project=`$(MSBuildBinPath)\Microsoft.Common.props` /> <Import Project=`$(MSBuildBinPath)\Microsoft.CSharp.targets` /> </Project> ")); project.GetPropertyValue(PropertyNameToEnableImport).ShouldBe("true"); project.GetPropertyValue(PropertyNameToSignalImportSucceeded).ShouldBe("true"); }