diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000000..84a7478bfa
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $SOURCE until the file is no longer a symlink
+while [[ -h $source ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+"$scriptroot/eng/common/build.sh" --restore --build $@
diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh
old mode 100644
new mode 100755
diff --git a/nuget/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.Package.csproj b/nuget/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.Package.csproj
index f6ac70f777..319e04c1b0 100644
--- a/nuget/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.Package.csproj
+++ b/nuget/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.Package.csproj
@@ -14,7 +14,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.AnalyzerUtilities
Restore would conclude that there is a cyclic dependency between Microsoft.CodeAnalysis and Microsoft.CodeAnalysis.AnalyzerUtilities.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
false
@@ -31,4 +31,4 @@
-
\ No newline at end of file
+
diff --git a/nuget/Microsoft.CodeAnalysis.Analyzers/Microsoft.CodeAnalysis.Analyzers.Package.csproj b/nuget/Microsoft.CodeAnalysis.Analyzers/Microsoft.CodeAnalysis.Analyzers.Package.csproj
index 5ca2d53f94..1617b95993 100644
--- a/nuget/Microsoft.CodeAnalysis.Analyzers/Microsoft.CodeAnalysis.Analyzers.Package.csproj
+++ b/nuget/Microsoft.CodeAnalysis.Analyzers/Microsoft.CodeAnalysis.Analyzers.Package.csproj
@@ -14,7 +14,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.Analyzers
Restore would conclude that there is a cyclic dependency between Microsoft.CodeAnalysis and Microsoft.CodeAnalysis.Analyzers.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
@@ -28,4 +28,4 @@
-
\ No newline at end of file
+
diff --git a/src/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj b/src/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj
index 5bc31228b9..a596765eaa 100644
--- a/src/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj
+++ b/src/Microsoft.CodeAnalysis.AnalyzerUtilities/Microsoft.CodeAnalysis.AnalyzerUtilities.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.AnalyzerUtilities,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeAnalysis.AnalyzerUtilities package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
true
true
true
diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Core/Microsoft.CodeAnalysis.Analyzers.csproj b/src/Microsoft.CodeAnalysis.Analyzers/Core/Microsoft.CodeAnalysis.Analyzers.csproj
index eab29554e1..fd3ef65f58 100644
--- a/src/Microsoft.CodeAnalysis.Analyzers/Core/Microsoft.CodeAnalysis.Analyzers.csproj
+++ b/src/Microsoft.CodeAnalysis.Analyzers/Core/Microsoft.CodeAnalysis.Analyzers.csproj
@@ -2,11 +2,12 @@
netstandard2.0
+
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
@@ -18,4 +19,4 @@
-
\ No newline at end of file
+
diff --git a/src/Microsoft.CodeAnalysis.Analyzers/Setup/Microsoft.CodeAnalysis.Analyzers.Setup.csproj b/src/Microsoft.CodeAnalysis.Analyzers/Setup/Microsoft.CodeAnalysis.Analyzers.Setup.csproj
index d4df55f3ca..3be1976b56 100644
--- a/src/Microsoft.CodeAnalysis.Analyzers/Setup/Microsoft.CodeAnalysis.Analyzers.Setup.csproj
+++ b/src/Microsoft.CodeAnalysis.Analyzers/Setup/Microsoft.CodeAnalysis.Analyzers.Setup.csproj
@@ -7,7 +7,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.Analyzers
Restore would conclude that there is a cyclic dependency between Microsoft.CodeAnalysis and Microsoft.CodeAnalysis.Analyzers.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
false
false
@@ -15,6 +15,7 @@
false
true
false
+ true
@@ -37,4 +38,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/Microsoft.CodeAnalysis.BannedApiAnalyzers.csproj b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/Microsoft.CodeAnalysis.BannedApiAnalyzers.csproj
index d8d799a9d4..1f89c1cec9 100644
--- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/Microsoft.CodeAnalysis.BannedApiAnalyzers.csproj
+++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Core/Microsoft.CodeAnalysis.BannedApiAnalyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.BannedApiAnalyzer,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeAnalysis.BannedApiAnalyzer package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
2.9.0
diff --git a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Setup/Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup.csproj b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Setup/Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup.csproj
index 849675f307..19627e3f58 100644
--- a/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Setup/Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup.csproj
+++ b/src/Microsoft.CodeAnalysis.BannedApiAnalyzers/Setup/Microsoft.CodeAnalysis.BannedApiAnalyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -15,4 +16,4 @@
-
\ No newline at end of file
+
diff --git a/src/Microsoft.CodeAnalysis.FxCopAnalyzers/Setup/Microsoft.CodeAnalysis.FxCopAnalyzers.Setup.csproj b/src/Microsoft.CodeAnalysis.FxCopAnalyzers/Setup/Microsoft.CodeAnalysis.FxCopAnalyzers.Setup.csproj
index 63a68f61cd..62ffd98c71 100644
--- a/src/Microsoft.CodeAnalysis.FxCopAnalyzers/Setup/Microsoft.CodeAnalysis.FxCopAnalyzers.Setup.csproj
+++ b/src/Microsoft.CodeAnalysis.FxCopAnalyzers/Setup/Microsoft.CodeAnalysis.FxCopAnalyzers.Setup.csproj
@@ -9,6 +9,7 @@
true
true
false
+ true
@@ -57,4 +58,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/Microsoft.CodeAnalysis.VersionCheckAnalyzer/Microsoft.CodeAnalysis.VersionCheckAnalyzer.csproj b/src/Microsoft.CodeAnalysis.VersionCheckAnalyzer/Microsoft.CodeAnalysis.VersionCheckAnalyzer.csproj
index bbf276e8ef..3ef0e2fc7f 100644
--- a/src/Microsoft.CodeAnalysis.VersionCheckAnalyzer/Microsoft.CodeAnalysis.VersionCheckAnalyzer.csproj
+++ b/src/Microsoft.CodeAnalysis.VersionCheckAnalyzer/Microsoft.CodeAnalysis.VersionCheckAnalyzer.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.VersionCheckAnalyzer,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeAnalysis.VersionCheckAnalyzer package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
2.0.0
true
diff --git a/src/Microsoft.CodeQuality.Analyzers/Setup/Microsoft.CodeQuality.Analyzers.Setup.csproj b/src/Microsoft.CodeQuality.Analyzers/Setup/Microsoft.CodeQuality.Analyzers.Setup.csproj
index ed43cc1abe..fc4b50b1f4 100644
--- a/src/Microsoft.CodeQuality.Analyzers/Setup/Microsoft.CodeQuality.Analyzers.Setup.csproj
+++ b/src/Microsoft.CodeQuality.Analyzers/Setup/Microsoft.CodeQuality.Analyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/Microsoft.NetCore.Analyzers/Setup/Microsoft.NetCore.Analyzers.Setup.csproj b/src/Microsoft.NetCore.Analyzers/Setup/Microsoft.NetCore.Analyzers.Setup.csproj
index da8c2e9231..10d97189a3 100644
--- a/src/Microsoft.NetCore.Analyzers/Setup/Microsoft.NetCore.Analyzers.Setup.csproj
+++ b/src/Microsoft.NetCore.Analyzers/Setup/Microsoft.NetCore.Analyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/Microsoft.NetFramework.Analyzers/Setup/Microsoft.NetFramework.Analyzers.Setup.csproj b/src/Microsoft.NetFramework.Analyzers/Setup/Microsoft.NetFramework.Analyzers.Setup.csproj
index 631b0013b8..c47356ce65 100644
--- a/src/Microsoft.NetFramework.Analyzers/Setup/Microsoft.NetFramework.Analyzers.Setup.csproj
+++ b/src/Microsoft.NetFramework.Analyzers/Setup/Microsoft.NetFramework.Analyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/NetAnalyzers/Core/Microsoft.CodeAnalysis.NetAnalyzers.csproj b/src/NetAnalyzers/Core/Microsoft.CodeAnalysis.NetAnalyzers.csproj
index 23e99b9572..9e7941571a 100644
--- a/src/NetAnalyzers/Core/Microsoft.CodeAnalysis.NetAnalyzers.csproj
+++ b/src/NetAnalyzers/Core/Microsoft.CodeAnalysis.NetAnalyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeQuality.Analyzers
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeQuality.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
diff --git a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Microsoft.CodeQuality.Analyzers.csproj b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Microsoft.CodeQuality.Analyzers.csproj
index 87f5249765..491bb33e7a 100644
--- a/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Microsoft.CodeQuality.Analyzers.csproj
+++ b/src/NetAnalyzers/Core/Microsoft.CodeQuality.Analyzers/Microsoft.CodeQuality.Analyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeQuality.Analyzers
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeQuality.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
diff --git a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Microsoft.NetCore.Analyzers.csproj b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Microsoft.NetCore.Analyzers.csproj
index 28448f1eb9..b6a4101714 100644
--- a/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Microsoft.NetCore.Analyzers.csproj
+++ b/src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Microsoft.NetCore.Analyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.NetCore.Analyzers
Restore would conclude that there is a cyclic dependency between us and the Microsoft.NetCore.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
diff --git a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Microsoft.NetFramework.Analyzers.csproj b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Microsoft.NetFramework.Analyzers.csproj
index 8d1c987807..08549f0265 100644
--- a/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Microsoft.NetFramework.Analyzers.csproj
+++ b/src/NetAnalyzers/Core/Microsoft.NetFramework.Analyzers/Microsoft.NetFramework.Analyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.NetFramework.Analyzers,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.NetFramework.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
diff --git a/src/NetAnalyzers/Setup/Microsoft.CodeAnalysis.NetAnalyzers.Setup.csproj b/src/NetAnalyzers/Setup/Microsoft.CodeAnalysis.NetAnalyzers.Setup.csproj
index 53c50e1138..ac01471a91 100644
--- a/src/NetAnalyzers/Setup/Microsoft.CodeAnalysis.NetAnalyzers.Setup.csproj
+++ b/src/NetAnalyzers/Setup/Microsoft.CodeAnalysis.NetAnalyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/PerformanceSensitiveAnalyzers/Core/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.csproj b/src/PerformanceSensitiveAnalyzers/Core/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.csproj
index 343dd64324..0149999420 100644
--- a/src/PerformanceSensitiveAnalyzers/Core/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.csproj
+++ b/src/PerformanceSensitiveAnalyzers/Core/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.PerformanceSensitive.Analyzers,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeAnalysis.PerformanceSensitive.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
2.9.0
diff --git a/src/PerformanceSensitiveAnalyzers/Setup/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup.csproj b/src/PerformanceSensitiveAnalyzers/Setup/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup.csproj
index 667d4b6643..c4ae349830 100644
--- a/src/PerformanceSensitiveAnalyzers/Setup/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup.csproj
+++ b/src/PerformanceSensitiveAnalyzers/Setup/Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -15,4 +16,4 @@
-
\ No newline at end of file
+
diff --git a/src/PublicApiAnalyzers/Core/Analyzers/Microsoft.CodeAnalysis.PublicApiAnalyzers.csproj b/src/PublicApiAnalyzers/Core/Analyzers/Microsoft.CodeAnalysis.PublicApiAnalyzers.csproj
index 73b42c326a..1b976eef82 100644
--- a/src/PublicApiAnalyzers/Core/Analyzers/Microsoft.CodeAnalysis.PublicApiAnalyzers.csproj
+++ b/src/PublicApiAnalyzers/Core/Analyzers/Microsoft.CodeAnalysis.PublicApiAnalyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Microsoft.CodeAnalysis.PublicApiAnalyzer,
Restore would conclude that there is a cyclic dependency between us and the Microsoft.CodeAnalysis.PublicApiAnalyzer package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
1.2.1
diff --git a/src/PublicApiAnalyzers/Core/CodeFixes/Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes.csproj b/src/PublicApiAnalyzers/Core/CodeFixes/Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes.csproj
index c355be240a..62cbf0b503 100644
--- a/src/PublicApiAnalyzers/Core/CodeFixes/Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes.csproj
+++ b/src/PublicApiAnalyzers/Core/CodeFixes/Microsoft.CodeAnalysis.PublicApiAnalyzers.CodeFixes.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to DotNetAnalyzers.PublicApiAnalyzer.CodeFixes,
Restore would conclude that there is a cyclic dependency between us and the DotNetAnalyzers.PublicApiAnalyzer.CodeFixes package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
1.2.1
true
diff --git a/src/PublicApiAnalyzers/Setup/Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup.csproj b/src/PublicApiAnalyzers/Setup/Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup.csproj
index dbeee618f2..447544a21c 100644
--- a/src/PublicApiAnalyzers/Setup/Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup.csproj
+++ b/src/PublicApiAnalyzers/Setup/Microsoft.CodeAnalysis.PublicApiAnalyzers.Setup.csproj
@@ -8,10 +8,11 @@
false
true
false
+ true
-
\ No newline at end of file
+
diff --git a/src/Roslyn.Diagnostics.Analyzers/Core/Roslyn.Diagnostics.Analyzers.csproj b/src/Roslyn.Diagnostics.Analyzers/Core/Roslyn.Diagnostics.Analyzers.csproj
index 11f7691f48..9298299c73 100644
--- a/src/Roslyn.Diagnostics.Analyzers/Core/Roslyn.Diagnostics.Analyzers.csproj
+++ b/src/Roslyn.Diagnostics.Analyzers/Core/Roslyn.Diagnostics.Analyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Roslyn.Diagnostics.Analyzers,
Restore would conclude that there is a cyclic dependency between us and the Roslyn.Diagnostics.Analyzers package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
$(MicrosoftCodeAnalysisForRoslynDiagnosticsAnalyzersVersion)
diff --git a/src/Roslyn.Diagnostics.Analyzers/Setup/Roslyn.Diagnostics.Analyzers.Setup.csproj b/src/Roslyn.Diagnostics.Analyzers/Setup/Roslyn.Diagnostics.Analyzers.Setup.csproj
index 3e76c5f63a..b1ba884b5a 100644
--- a/src/Roslyn.Diagnostics.Analyzers/Setup/Roslyn.Diagnostics.Analyzers.Setup.csproj
+++ b/src/Roslyn.Diagnostics.Analyzers/Setup/Roslyn.Diagnostics.Analyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+
diff --git a/src/Text.Analyzers/Core/Text.Analyzers.csproj b/src/Text.Analyzers/Core/Text.Analyzers.csproj
index 0b75ee195c..7ad8dd4bce 100644
--- a/src/Text.Analyzers/Core/Text.Analyzers.csproj
+++ b/src/Text.Analyzers/Core/Text.Analyzers.csproj
@@ -6,7 +6,7 @@
PackageId is used by Restore. If we set it to Text.Analyzers,
Restore would conclude that there is a cyclic dependency between us and the Text.Analyzers nuget package.
-->
- *$(MSBuildProjectFullPath)*
+ *$(MSBuildProjectFile)*
diff --git a/src/Text.Analyzers/Setup/Text.Analyzers.Setup.csproj b/src/Text.Analyzers/Setup/Text.Analyzers.Setup.csproj
index d9dc06062c..60d4f96120 100644
--- a/src/Text.Analyzers/Setup/Text.Analyzers.Setup.csproj
+++ b/src/Text.Analyzers/Setup/Text.Analyzers.Setup.csproj
@@ -8,6 +8,7 @@
false
true
false
+ true
@@ -30,4 +31,4 @@
true
-
\ No newline at end of file
+