提交 726e79c3 编写于 作者: J Jared Parsons

Validate the allowed values for RoslynProjectType

上级 415b1449
......@@ -43,7 +43,7 @@
<OutDir>$(OutDir)Exes\</OutDir>
</PropertyGroup>
</When>
<When Condition="'$(RoslynProjectType)' == 'DeploymentCompilergeneratorTools'">
<When Condition="'$(RoslynProjectType)' == 'DeploymentCompilerGeneratorTools'">
<PropertyGroup>
<OutDir>$(OutDir)CompilerGeneratorTools\</OutDir>
</PropertyGroup>
......
......@@ -40,25 +40,69 @@ internal bool CheckAll(TextWriter textWriter)
allGood &= CheckForProperty(textWriter, "OldToolsVersion");
}
allGood &= CheckRoslynProjectType(textWriter);
return allGood;
}
private bool CheckForProperty(TextWriter textWriter, string propertyName)
{
var groups = _projectData.XPathSelectElements("//mb:PropertyGroup", _manager);
foreach(var group in groups)
foreach (var element in GetAllPropertyGroupElements())
{
foreach (var element in group.Elements())
if (element.Name.LocalName == propertyName)
{
if (element.Name.LocalName == propertyName)
{
textWriter.WriteLine($"\tDo not use {propertyName}");
return false;
}
textWriter.WriteLine($"\tDo not use {propertyName}");
return false;
}
}
return true;
}
/// <summary>
/// Validate the content of RoslynProjectType is one of the supported values.
/// </summary>
private bool CheckRoslynProjectType(TextWriter textWriter)
{
var element = GetAllPropertyGroupElements().FirstOrDefault(x => x.Name.LocalName == "RoslynProjectType");
if (element == null)
{
return true;
}
var value = element.Value.Trim();
switch (value)
{
case "Dll":
case "ExeDesktop":
case "ToolDesktop":
case "ExeCoreClr":
case "UnitTest":
case "UnitTestNext":
case "CompilerGeneratorTool":
case "DeploymentCompilerGeneratorTools":
case "Deployment":
case "Vsix":
case "Ignore":
case "Dependency":
case "Custom":
return true;
default:
textWriter.WriteLine($@"Value ""{value}"" is illegal for RoslynProjectType");
return false;
}
}
private IEnumerable<XElement> GetAllPropertyGroupElements()
{
var groups = _projectData.XPathSelectElements("//mb:PropertyGroup", _manager);
foreach (var group in groups)
{
foreach (var element in group.Elements())
{
yield return element;
}
}
}
}
}
......@@ -18,7 +18,7 @@
<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
<NoStdLib>true</NoStdLib>
<NonShipping>true</NonShipping>
<RoslynProjectType>DeploymentCompilergeneratorTools</RoslynProjectType>
<RoslynProjectType>DeploymentCompilerGeneratorTools</RoslynProjectType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' " />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' " />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册