diff --git a/src/Workspaces/CoreTestUtilities/Resources/ProjectFiles/CSharp/MallformedAdditionalFilePath.csproj b/src/Workspaces/CoreTestUtilities/Resources/ProjectFiles/CSharp/MallformedAdditionalFilePath.csproj new file mode 100644 index 0000000000000000000000000000000000000000..e0261b96bd516abcaa74282bd9d7b064df7b6e91 --- /dev/null +++ b/src/Workspaces/CoreTestUtilities/Resources/ProjectFiles/CSharp/MallformedAdditionalFilePath.csproj @@ -0,0 +1,48 @@ + + + + + Debug + AnyCPU + {CE26EDB5-9F46-46D4-8EC0-9BC9293A8BE8} + Library + Properties + MalformedProject + MalformedProject + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Workspaces/CoreTestUtilities/Resources/SourceFiles/Text/ValidAdditionalFile.txt b/src/Workspaces/CoreTestUtilities/Resources/SourceFiles/Text/ValidAdditionalFile.txt new file mode 100644 index 0000000000000000000000000000000000000000..5f282702bb03ef11d7184d19c80927b47f919764 --- /dev/null +++ b/src/Workspaces/CoreTestUtilities/Resources/SourceFiles/Text/ValidAdditionalFile.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Workspaces/CoreTestUtilities/TestFiles/Resources.cs b/src/Workspaces/CoreTestUtilities/TestFiles/Resources.cs index b8a4e30c9d4e6825bbe72623992e60a949b0acd2..b61cbb987aa7e1020c9ed20ca3235627b57eeeac 100644 --- a/src/Workspaces/CoreTestUtilities/TestFiles/Resources.cs +++ b/src/Workspaces/CoreTestUtilities/TestFiles/Resources.cs @@ -126,6 +126,7 @@ public static class CSharp public static string ExternAlias2 => GetText("ProjectFiles.CSharp.ExternAlias2.csproj"); public static string ForEmittedOutput => GetText("ProjectFiles.CSharp.ForEmittedOutput.csproj"); public static string MsbuildError => GetText("ProjectFiles.CSharp.MsbuildError.csproj"); + public static string MallformedAdditionalFilePath => GetText("ProjectFiles.CSharp.MallformedAdditionalFilePath.csproj"); public static string NetCoreApp2_Project => GetText("NetCoreApp2.Project.csproj"); public static string NetCoreApp2AndLibrary_Project => GetText("NetCoreApp2AndLibrary.Project.csproj"); public static string NetCoreApp2AndLibrary_Library => GetText("NetCoreApp2AndLibrary.Library.csproj"); @@ -206,6 +207,11 @@ public static class FSharp public static string NetCoreMultiTFM_ProjectReferenceToFSharp_FSharpLib_Library = GetText("NetCoreMultiTFM_ProjectReferenceToFSharp.fsharplib.Library.fs"); } + public static class Text + { + public static string ValidAdditionalFile => GetText("SourceFiles.Text.ValidAdditionalFile.txt"); + } + public static class VisualBasic { public static string Application => GetText("SourceFiles.VisualBasic.Application.myapp"); diff --git a/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs b/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs index d97702eb86ce88be7f70470d08b4d865b4ea0bd2..07efa22fc4a19954fbd36c53f100a9ba43fccae6 100644 --- a/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs +++ b/src/Workspaces/MSBuildTest/MSBuildWorkspaceTests.cs @@ -3579,6 +3579,27 @@ public async Task TestOpenSolution_ProjectReferencesWithUnconventionalOutputPath } } + [ConditionalFact(typeof(VisualStudioMSBuildInstalled)), Trait(Traits.Feature, Traits.Features.MSBuildWorkspace)] + [WorkItem(29494, "https://github.com/dotnet/roslyn/issues/29494")] + public async Task TestOpenProjectAsync_MalformedAdditionalFilePath() + { + var files = GetSimpleCSharpSolutionFiles() + .WithFile(@"CSharpProject\CSharpProject.csproj", Resources.ProjectFiles.CSharp.MallformedAdditionalFilePath) + .WithFile(@"CSharpProject\ValidAdditionalFile.txt", Resources.SourceFiles.Text.ValidAdditionalFile); + + CreateFiles(files); + + var projectFilePath = GetSolutionFileName(@"CSharpProject\CSharpProject.csproj"); + + using (var workspace = CreateMSBuildWorkspace()) + { + var project = await workspace.OpenProjectAsync(projectFilePath); + + // Project should open without an exception being thrown. + Assert.NotNull(project); + } + } + private class InMemoryAssemblyLoader : IAnalyzerAssemblyLoader { public void AddDependencyLocation(string fullPath)