提交 15929719 编写于 作者: J Jonathon Marolf 提交者: GitHub

Merge pull request #12540 from vslsnap/merge-dev15-preview-4-into-master20160714-232752

Merge dev15-preview-4 into master
......@@ -23,6 +23,7 @@
<add key="myget.org dotnet-buildtools" value="https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json" />
<add key="myget.org symreader" value="https://dotnet.myget.org/F/symreader/api/v3/index.json" />
<add key="myget.org symreader-portable" value="https://dotnet.myget.org/F/symreader-portable/api/v3/index.json" />
<add key="myget.org roslyn-master-nightly" value="https://dotnet.myget.org/F/roslyn-master-nightly/api/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
......
......@@ -382,13 +382,13 @@
==================================================================================== -->
<PropertyGroup>
<OptimizationDataFolderPath>$(MSBuildThisFileDirectory)..\..\..\Closed\OptimizationData</OptimizationDataFolderPath>
<OptimizationDataFolderPath>$(NuGetPackageRoot)\RoslynDependencies.OptimizationData\1.3.0-beta5-60518-02\content\OptimizationData</OptimizationDataFolderPath>
<OptimizationDataFile>$([System.IO.Path]::GetFullPath('$(OptimizationDataFolderPath)\$(TargetName).pgo'))</OptimizationDataFile>
<IbcMergePath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\..\..\Closed\Tools\ibcmerge\ibcmerge.exe'))</IbcMergePath>
</PropertyGroup>
<!-- The path to IBCMerge.exe must be specified at build time via $(IbcMergePath). Typically this is passed as a build definition variable -->
<Target Name="ApplyOptimizations"
Condition="'$(Configuration)' == 'Release' AND '$(NonShipping)' != 'true' AND '$(SkipApplyOptimizations)' != 'true' AND Exists('$(OptimizationDataFile)')"
Condition="'$(Configuration)' == 'Release' AND '$(NonShipping)' != 'true' AND '$(SkipApplyOptimizations)' != 'true' AND Exists('$(OptimizationDataFile)') AND Exists('$(IbcMergePath)')"
Inputs="@(IntermediateAssembly)"
Outputs="@(IntermediateAssembly);$(PostCompileBinaryModificationSentinelFile)">
......
......@@ -8,7 +8,8 @@
"Microsoft.Net.RoslynDiagnostics": "1.2.0-beta2",
"FakeSign": "0.9.2",
"xunit.runner.console": "2.2.0-beta1-build3239",
"Roslyn.Build.Util": "0.9.4-portable"
"Roslyn.Build.Util": "0.9.4-portable",
"RoslynDependencies.OptimizationData": "1.3.0-beta5-60518-02"
},
"frameworks": {
"net46": {}
......
......@@ -397,21 +397,6 @@ internal Symbol BindNamespaceOrTypeOrAliasSymbol(ExpressionSyntax syntax, Diagno
private TypeSymbol BindTupleType(TupleTypeSyntax syntax, DiagnosticBag diagnostics)
{
// If the tuple type is bound in a declaration context then we must have the
// TupleElementNamesAttribute to emit
if (syntax.IsTypeInContextWhichNeedsTupleNamesAttribute())
{
// Report diagnostics if System.String doesn't exist
this.GetSpecialType(SpecialType.System_String, diagnostics, syntax);
if (!Compilation.HasTupleNamesAttributes)
{
var info = new CSDiagnosticInfo(ErrorCode.ERR_TupleElementNamesAttributeMissing,
AttributeDescription.TupleElementNamesAttribute.FullName);
Error(diagnostics, info, syntax);
}
}
int numElements = syntax.Elements.Count;
var types = ArrayBuilder<TypeSymbol>.GetInstance(numElements);
var locations = ArrayBuilder<Location>.GetInstance(numElements);
......@@ -455,9 +440,27 @@ private TypeSymbol BindTupleType(TupleTypeSyntax syntax, DiagnosticBag diagnosti
uniqueFieldNames.Free();
if (countOfExplicitNames != 0 && countOfExplicitNames != numElements)
if (countOfExplicitNames != 0)
{
Error(diagnostics, ErrorCode.ERR_TupleExplicitNamesOnAllMembersOrNone, syntax);
if (countOfExplicitNames != numElements)
{
Error(diagnostics, ErrorCode.ERR_TupleExplicitNamesOnAllMembersOrNone, syntax);
}
// If the tuple type with names is bound in a declaration
// context then we must have the TupleElementNamesAttribute to emit
if (syntax.IsTypeInContextWhichNeedsTupleNamesAttribute())
{
// Report diagnostics if System.String doesn't exist
this.GetSpecialType(SpecialType.System_String, diagnostics, syntax);
if (!Compilation.HasTupleNamesAttributes)
{
var info = new CSDiagnosticInfo(ErrorCode.ERR_TupleElementNamesAttributeMissing,
AttributeDescription.TupleElementNamesAttribute.FullName);
Error(diagnostics, info, syntax);
}
}
}
ImmutableArray<TypeSymbol> typesArray = types.ToImmutableAndFree();
......
......@@ -3967,6 +3967,15 @@ internal class CSharpResources {
}
}
/// <summary>
/// Looks up a localized string similar to Cannot reference &apos;System.Runtime.CompilerServices.TupleElementNamesAttribute&apos; explicitly. Use the tuple syntax to define tuple names..
/// </summary>
internal static string ERR_ExplicitTupleElementNames {
get {
return ResourceManager.GetString("ERR_ExplicitTupleElementNames", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Type &apos;{0}&apos; exported from module &apos;{1}&apos; conflicts with type declared in primary module of this assembly..
/// </summary>
......
......@@ -4914,4 +4914,7 @@ To remove the warning, you can use /reference instead (set the Embed Interop Typ
<data name="ERR_TupleElementNamesAttributeMissing" xml:space="preserve">
<value>Cannot define a class or member that utilizes tuples because the compiler required type '{0}' cannot be found. Are you missing a reference?</value>
</data>
</root>
\ No newline at end of file
<data name="ERR_ExplicitTupleElementNames" xml:space="preserve">
<value>Cannot reference 'System.Runtime.CompilerServices.TupleElementNamesAttribute' explicitly. Use the tuple syntax to define tuple names.</value>
</data>
</root>
......@@ -1374,6 +1374,7 @@ internal enum ErrorCode
ERR_DeconstructionVarFormDisallowsSpecificType = 8215,
ERR_TupleElementNamesAttributeMissing = 8216,
ERR_ExplicitTupleElementNames = 8217,
#endregion tuple diagnostics introduced in C# 7
......
......@@ -491,7 +491,7 @@ internal SynthesizedAttributeData SynthesizeDynamicAttribute(TypeSymbol type, in
}
}
internal SynthesizedAttributeData SynthesizeTupleNamesAttribute(TypeSymbol type)
internal SynthesizedAttributeData SynthesizeTupleNamesAttributeOpt(TypeSymbol type)
{
Debug.Assert((object)type != null);
Debug.Assert(type.ContainsTuple());
......@@ -499,6 +499,13 @@ internal SynthesizedAttributeData SynthesizeTupleNamesAttribute(TypeSymbol type)
var stringType = GetSpecialType(SpecialType.System_String);
Debug.Assert((object)stringType != null);
var names = TupleNamesEncoder.Encode(type, stringType);
// If there are no names, elide the attribute entirely
if (names.IsDefault)
{
return null;
}
var stringArray = ArrayTypeSymbol.CreateSZArray(stringType.ContainingAssembly, stringType, customModifiers: ImmutableArray<CustomModifier>.Empty);
var args = ImmutableArray.Create(new TypedConstant(stringArray, names));
return TrySynthesizeAttribute(WellKnownMember.System_Runtime_CompilerServices_TupleElementNamesAttribute__ctorTransformNames, args);
......@@ -512,6 +519,13 @@ public static ImmutableArray<TypedConstant> Encode(TypeSymbol type, TypeSymbol s
type.VisitType((t, builder, _ignore) => AddNames(t, builder), namesBuilder);
Debug.Assert(namesBuilder.Any());
// If none of the tuples have names, return a default array
if (namesBuilder.All(name => name == null))
{
namesBuilder.Free();
return default(ImmutableArray<TypedConstant>);
}
var names = namesBuilder.SelectAsArray((name, constantType) =>
new TypedConstant(constantType, TypedConstantKind.Primitive, name), stringType);
namesBuilder.Free();
......
......@@ -82,45 +82,37 @@ private TupleTypeDecoder(ImmutableArray<string> elementNames, AssemblySymbol con
Debug.Assert((object)containingModule != null);
ImmutableArray<string> elementNames;
// First check if the type is an interface. Interface implementations
// currently don't record tuple names in an attribute
// TODO(https://github.com/dotnet/roslyn/issues/12347)
if (metadataType.IsInterfaceType())
var hasTupleElementNamesAttribute = containingModule
.Module
.HasTupleElementNamesAttribute(targetSymbolToken, out elementNames);
// If we have the TupleElementNamesAttribute, but no names, that's
// bad metadata
if (hasTupleElementNamesAttribute && elementNames.IsDefaultOrEmpty)
{
elementNames = default(ImmutableArray<string>);
var decoder = new TupleTypeDecoder(elementNames, containingModule.ContainingAssembly);
return decoder.DecodeNamedType((NamedTypeSymbol)metadataType);
return new UnsupportedMetadataTypeSymbol();
}
if (containingModule.Module.HasTupleElementNamesAttribute(targetSymbolToken, out elementNames))
var decoder = new TupleTypeDecoder(elementNames,
containingModule.ContainingAssembly);
try
{
var decoder = new TupleTypeDecoder(elementNames, containingModule.ContainingAssembly);
try
{
var decoded = decoder.DecodeType(metadataType);
if (decoder._namesIndex == 0 && decoded.ContainsTuple())
{
return decoded;
}
// If not all of the names have been used, the metadata is bad
}
catch (InvalidOperationException)
var decoded = decoder.DecodeType(metadataType);
// If not all of the names have been used, the metadata is bad
if (!hasTupleElementNamesAttribute ||
decoder._namesIndex == 0)
{
// Indicates that the tuple info in the attribute didn't match
// the type. Bad metadata.
return decoded;
}
// Bad metadata
return new UnsupportedMetadataTypeSymbol();
}
// No TupleElementNamesAttribute, check if it's a tuple nonetheless
if (metadataType.IsTupleCompatible())
catch (InvalidOperationException)
{
return TupleTypeSymbol.Create((NamedTypeSymbol)metadataType);
// Indicates that the tuple info in the attribute didn't match
// the type. Bad metadata.
}
// Not a tuple
return metadataType;
// Bad metadata
return new UnsupportedMetadataTypeSymbol();
}
private TypeSymbol DecodeType(TypeSymbol type)
......@@ -130,6 +122,7 @@ private TypeSymbol DecodeType(TypeSymbol type)
case SymbolKind.ErrorType:
case SymbolKind.DynamicType:
case SymbolKind.TypeParameter:
case SymbolKind.PointerType:
return type;
case SymbolKind.NamedType:
......
......@@ -623,6 +623,10 @@ internal override void DecodeWellKnownAttribute(ref DecodeWellKnownAttributeArgu
// DynamicAttribute should not be set explicitly.
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitDynamicAttr, arguments.AttributeSyntaxOpt.Location);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
}
......
......@@ -285,6 +285,10 @@ internal sealed override void DecodeWellKnownAttribute(ref DecodeWellKnownAttrib
{
arguments.GetOrCreateData<CommonEventWellKnownAttributeData>().HasSpecialNameAttribute = true;
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
}
internal override void AddSynthesizedAttributes(ModuleCompilationState compilationState, ref ArrayBuilder<SynthesizedAttributeData> attributes)
......@@ -300,7 +304,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
if (Type.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes,
DeclaringCompilation.SynthesizeTupleNamesAttribute(Type));
DeclaringCompilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......
......@@ -362,6 +362,10 @@ internal sealed override void DecodeWellKnownAttribute(ref DecodeWellKnownAttrib
{
VerifyConstantValueMatches(attribute.DecodeDecimalConstantValue(), ref arguments);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
}
/// <summary>
......@@ -464,7 +468,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
if (Type.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes,
DeclaringCompilation.SynthesizeTupleNamesAttribute(Type));
DeclaringCompilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......
......@@ -960,7 +960,7 @@ internal override void AddSynthesizedReturnTypeAttributes(ref ArrayBuilder<Synth
if (ReturnType.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes,
DeclaringCompilation.SynthesizeTupleNamesAttribute(ReturnType));
DeclaringCompilation.SynthesizeTupleNamesAttributeOpt(ReturnType));
}
}
......@@ -1221,6 +1221,10 @@ private void DecodeWellKnownAttributeAppliedToReturnValue(ref DecodeWellKnownAtt
// DynamicAttribute should not be set explicitly.
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitDynamicAttr, arguments.AttributeSyntaxOpt.Location);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
}
private void DecodeDllImportAttribute(ref DecodeWellKnownAttributeArguments<AttributeSyntax, CSharpAttributeData, AttributeLocation> arguments)
......
......@@ -692,6 +692,10 @@ internal sealed override void DecodeWellKnownAttribute(ref DecodeWellKnownAttrib
// DynamicAttribute should not be set explicitly.
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitDynamicAttr, arguments.AttributeSyntaxOpt.Location);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.SecurityCriticalAttribute)
|| attribute.IsTargetAttribute(this, AttributeDescription.SecuritySafeCriticalAttribute))
{
......@@ -1087,7 +1091,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
if (baseType.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes, compilation.SynthesizeTupleNamesAttribute(baseType));
AddSynthesizedAttribute(ref attributes, compilation.SynthesizeTupleNamesAttributeOpt(baseType));
}
}
}
......
......@@ -85,7 +85,7 @@ internal sealed override void AddSynthesizedAttributes(ModuleCompilationState co
if (Type.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes,
compilation.SynthesizeTupleNamesAttribute(Type));
compilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......
......@@ -1066,7 +1066,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
if (Type.ContainsTuple())
{
AddSynthesizedAttribute(ref attributes,
DeclaringCompilation.SynthesizeTupleNamesAttribute(Type));
DeclaringCompilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......@@ -1164,6 +1164,10 @@ internal override void DecodeWellKnownAttribute(ref DecodeWellKnownAttributeArgu
// DynamicAttribute should not be set explicitly.
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitDynamicAttr, arguments.AttributeSyntaxOpt.Location);
}
else if (attribute.IsTargetAttribute(this, AttributeDescription.TupleElementNamesAttribute))
{
arguments.Diagnostics.Add(ErrorCode.ERR_ExplicitTupleElementNames, arguments.AttributeSyntaxOpt.Location);
}
}
internal override void PostDecodeWellKnownAttributes(ImmutableArray<CSharpAttributeData> boundAttributes, ImmutableArray<AttributeSyntax> allAttributeSyntaxNodes, DiagnosticBag diagnostics, AttributeLocation symbolPart, WellKnownAttributeData decodedData)
......
......@@ -62,7 +62,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
compilation.CanEmitSpecialType(SpecialType.System_String))
{
AddSynthesizedAttribute(ref attributes,
compilation.SynthesizeTupleNamesAttribute(Type));
compilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......
......@@ -92,7 +92,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
compilation.CanEmitSpecialType(SpecialType.System_String))
{
AddSynthesizedAttribute(ref attributes,
compilation.SynthesizeTupleNamesAttribute(ReturnType));
compilation.SynthesizeTupleNamesAttributeOpt(ReturnType));
}
}
......
......@@ -169,7 +169,7 @@ internal override void AddSynthesizedAttributes(ModuleCompilationState compilati
compilation.CanEmitSpecialType(SpecialType.System_String))
{
AddSynthesizedAttribute(ref attributes,
compilation.SynthesizeTupleNamesAttribute(Type));
compilation.SynthesizeTupleNamesAttributeOpt(Type));
}
}
......
......@@ -3455,9 +3455,6 @@ public ValueTuple(T1 item1, T2 item2)
// (11,13): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// void M2((int a, int b) y)
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "(int a, int b)").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(11, 13),
// (4,5): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// (string, string) M()
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "(string, string)").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(4, 5),
// (7,39): error CS8205: Member 'Item1' was not found on type 'ValueTuple<T1, T2>' from assembly 'comp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
// System.Console.WriteLine($"{x.Item1}");
Diagnostic(ErrorCode.ERR_PredefinedTypeMemberNotFoundInAssembly, "Item1").WithArguments("Item1", "System.ValueTuple<T1, T2>", "comp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null").WithLocation(7, 39),
......
......@@ -313,9 +313,6 @@ class A
// (5,46): error CS0102: The type 'A' already contains a definition for ''
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_DuplicateNameInClass, "").WithArguments("A", "").WithLocation(5, 46),
// (5,43): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "()").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(5, 43),
// (5,43): error CS8200: Tuple must contain at least two elements.
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_TupleTooFewElements, "()").WithLocation(5, 43),
......@@ -384,9 +381,6 @@ class A
// (5,46): error CS0102: The type 'A' already contains a definition for ''
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_DuplicateNameInClass, "").WithArguments("A", "").WithLocation(5, 46),
// (5,43): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "()").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(5, 43),
// (5,43): error CS8200: Tuple must contain at least two elements.
// protected virtual void Finalize const () { }
Diagnostic(ErrorCode.ERR_TupleTooFewElements, "()").WithLocation(5, 43),
......
......@@ -1062,9 +1062,6 @@ class C
// (5,18): error CS1026: ) expected
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_CloseParenExpected, "{").WithLocation(5, 18),
// (5,15): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "()").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(5, 15),
// (5,15): error CS8200: Tuple must contain at least two elements.
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_TupleTooFewElements, "()").WithLocation(5, 15),
......@@ -1119,9 +1116,6 @@ class C
// (5,18): error CS1026: ) expected
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_CloseParenExpected, "{").WithLocation(5, 18),
// (5,15): error CS8207: Cannot define a class or member that utilizes tuples because the compiler required type 'System.Runtime.CompilerServices.TupleElementNamesAttribute' cannot be found. Are you missing a reference?
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_TupleElementNamesAttributeMissing, "()").WithArguments("System.Runtime.CompilerServices.TupleElementNamesAttribute").WithLocation(5, 15),
// (5,15): error CS8200: Tuple must contain at least two elements.
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_TupleTooFewElements, "()").WithLocation(5, 15),
......
......@@ -10,9 +10,6 @@
<!-- Non-official builds / local testing have different defaults -->
<PropertyGroup Condition="'$(OfficialBuild)' != 'true'">
<UploadNugets>false</UploadNugets>
<UploadVsixes>false</UploadVsixes>
<UploadCoreXTPackages>false</UploadCoreXTPackages>
<BranchName Condition="'$(BranchName)' == ''">master</BranchName>
<SignRoslynArgs>-test</SignRoslynArgs>
<PublishAssetsArgs>-test</PublishAssetsArgs>
......@@ -20,7 +17,7 @@
</PropertyGroup>
<Target Name="Build">
<Exec Command="Restore.cmd /clean" WorkingDirectory="$(ProjectDir)" />
<Exec Command="Restore.cmd /clean" WorkingDirectory="$(ProjectDir)" Condition="'$(SkipRestore)' != 'true'" />
<MSBuild Projects="$(ProjectDir)Roslyn.sln" BuildInParallel="true" />
<MSBuild Projects="$(ProjectDir)src\Dependencies\Dependencies.sln" BuildInParallel="true" />
......@@ -32,7 +29,7 @@
<MSBuild Projects="$(ProjectDir)src\NuGet\NuGet.proj" />
<MSBuild Projects="$(ProjectDir)src\Setup\SetupStep2.proj" />
<MSBuild Projects="$(ProjectDir)BuildAndTest.proj" Targets="Test" Condition="'$(SkipTest)' == ''" />
<MSBuild Projects="$(ProjectDir)BuildAndTest.proj" Targets="Test" Condition="'$(SkipTest)' != 'true'" />
<!-- Insertion scripts currently look for a sentinel file on the drop share to determine that the build was green
and ready to be inserted -->
......
......@@ -50,7 +50,6 @@
"Roslyn.VisualStudio.DiagnosticsWindow.dll",
"Roslyn.VisualStudio.InteractiveComponents.dll",
"Roslyn.VisualStudio.Setup.Interactive.dll",
"Roslyn.VisualStudio.Test.Utilities.dll",
"SDK\\Roslyn.SyntaxVisualizer.DgmlHelper.dll",
"SDK\\Roslyn.SyntaxVisualizer.Control.dll",
"SDK\\Roslyn.SyntaxVisualizer.Extension.dll",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册