diff --git a/Microsoft.DotNet.Cli.sln b/Microsoft.DotNet.Cli.sln
index 855541357..0988307b9 100644
--- a/Microsoft.DotNet.Cli.sln
+++ b/Microsoft.DotNet.Cli.sln
@@ -22,18 +22,20 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestPackages", "TestPackage
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}"
ProjectSection(SolutionItems) = preProject
+ build\AppHostTemplate.proj = build\AppHostTemplate.proj
build\AzureInfo.props = build\AzureInfo.props
build\BackwardsCompatibilityRuntimes.props = build\BackwardsCompatibilityRuntimes.props
build\BranchInfo.props = build\BranchInfo.props
build\Branding.props = build\Branding.props
build\BuildDefaults.props = build\BuildDefaults.props
build\BuildInfo.targets = build\BuildInfo.targets
+ build\BundledDotnetTools.proj = build\BundledDotnetTools.proj
+ build\BundledDotnetTools.props = build\BundledDotnetTools.props
build\BundledRuntimes.props = build\BundledRuntimes.props
build\BundledSdks.props = build\BundledSdks.props
build\BundledTemplates.proj = build\BundledTemplates.proj
build\BundledTemplates.props = build\BundledTemplates.props
build\BundledTools.props = build\BundledTools.props
- build\BundledVersions.targets = build\BundledVersions.targets
build\Compile.targets = build\Compile.targets
build\CrossGen.props = build\CrossGen.props
build\DependencyVersions.props = build\DependencyVersions.props
diff --git a/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj b/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj
index f99d38872..9c5f2a885 100755
--- a/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj
+++ b/TestAssets/TestProjects/TestAppSimple/TestAppSimple.csproj
@@ -4,7 +4,5 @@
netcoreapp2.1
Exe
-
- true
\ No newline at end of file
diff --git a/build/AppHostTemplate.proj b/build/AppHostTemplate.proj
new file mode 100644
index 000000000..598f250b6
--- /dev/null
+++ b/build/AppHostTemplate.proj
@@ -0,0 +1,49 @@
+
+
+
+
+
+ .exe
+ AppHost$(NativeExecutableExtension)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ --runtime $(Rid)
+ $(AppHostTemplateRestoreAdditionalParameters) /p:TargetFramework=$(CliTargetFramework)
+ $(AppHostTemplateRestoreAdditionalParameters) /p:TemplateFillInPackageName=$(TemplateFillInPackageName)
+ $(AppHostTemplateRestoreAdditionalParameters) /p:TemplateFillInPackageVersion=$(TemplateFillInPackageVersion)
+ $(AppHostTemplateRestoreAdditionalParameters) /p:RestorePackagesPath=$(AppHostIntermediateDirectory)
+
+
+
+
+
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index cbb609c87..3acab50fa 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -4,12 +4,12 @@
2.1.0-preview2-30475
2.1.0-preview3-26405-02
$(MicrosoftNETCoreAppPackageVersion)
- 15.7.0-preview-000127
+ 15.7.0-preview-000144
$(MicrosoftBuildPackageVersion)
$(MicrosoftBuildPackageVersion)
$(MicrosoftBuildPackageVersion)
$(MicrosoftBuildPackageVersion)
- 10.1.4-rtm-180213-0
+ 10.1.4-rtm-180403-0
2.8.0-beta4-62805-01
$(MicrosoftCodeAnalysisCSharpPackageVersion)
$(MicrosoftCodeAnalysisCSharpPackageVersion)
@@ -17,25 +17,24 @@
2.1.300-preview3-62804-06
$(MicrosoftNETSdkPackageVersion)
$(MicrosoftAspNetCoreAppPackageVersion)
- 2.1.300-preview2-20180306-1448279
+ 2.1.300-preview2-20180403-1549509
$(MicrosoftNETSdkWebPackageVersion)
$(MicrosoftNETSdkWebPackageVersion)
- 1.0.1-beta3-20180104-1263555
+ 1.0.2-beta3-20180403-1549505
$(MicrosoftDotNetCommonItemTemplatesPackageVersion)
- 1.0.1-beta3-20180227-1423805
- 1.0.0-beta3-20171204-315
+ 1.0.2-beta3-20180403-1549505
+ 1.0.2-beta3-20180403-1549505
$(MicrosoftTemplateEngineCliPackageVersion)
$(MicrosoftTemplateEngineCliPackageVersion)
$(MicrosoftTemplateEngineCliPackageVersion)
$(MicrosoftTemplateEngineCliPackageVersion)
2.1.0-preview3-26405-02
2.1.0-preview3-26405-02
- 0.1.1-alpha-174
- 1.2.1-alpha-002133
+ 0.2.1-alpha-62803-03
+ 1.3.1-alpha-62803-04
$(MicrosoftDotNetProjectJsonMigrationPackageVersion)
0.2.0-beta-62628-01
- 1.6.0-beta2-25304
- 4.7.0-preview3.5039
+ 4.7.0-preview4.5065
$(NuGetBuildTasksPackageVersion)
$(NuGetBuildTasksPackageVersion)
$(NuGetBuildTasksPackageVersion)
diff --git a/build/MSBuildExtensions.targets b/build/MSBuildExtensions.targets
index 25d8db231..74401de5e 100644
--- a/build/MSBuildExtensions.targets
+++ b/build/MSBuildExtensions.targets
@@ -142,6 +142,11 @@ Copyright (c) .NET Foundation. All rights reserved.
$(_NETCorePlatformsPackageVersion)
$(SdkVersion)
<_NETCoreSdkIsPreview>$(_NETCoreSdkIsPreview)
+
+
+ 1.0.10
+ 1.1.7
+ 2.0.6
]]>
diff --git a/build_projects/update-dependencies/Config.cs b/build_projects/update-dependencies/Config.cs
index 88c47ee94..474d7a32a 100644
--- a/build_projects/update-dependencies/Config.cs
+++ b/build_projects/update-dependencies/Config.cs
@@ -5,6 +5,8 @@ using System;
using System.IO;
using System.Linq;
using System.Xml.Linq;
+using System.Collections;
+using System.Collections.Generic;
namespace Microsoft.DotNet.Scripts
{
@@ -38,9 +40,7 @@ namespace Microsoft.DotNet.Scripts
private Lazy _password = new Lazy(() => GetEnvironmentVariable("GITHUB_PASSWORD"));
private Lazy _dotNetVersionUrl = new Lazy(() => GetEnvironmentVariable("DOTNET_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info"));
- private Lazy _coreSetupVersionFragment = new Lazy(() => GetEnvironmentVariable("CORESETUP_VERSION_FRAGMENT", GetDefaultCoreSetupVersionFragment()));
- private Lazy _roslynVersionFragment = new Lazy(() => GetEnvironmentVariable("ROSLYN_VERSION_FRAGMENT"));
private Lazy _gitHubUpstreamOwner = new Lazy(() => GetEnvironmentVariable("GITHUB_UPSTREAM_OWNER", "dotnet"));
private Lazy _gitHubProject = new Lazy(() => GetEnvironmentVariable("GITHUB_PROJECT", "cli"));
private Lazy _gitHubUpstreamBranch = new Lazy(() => GetEnvironmentVariable("GITHUB_UPSTREAM_BRANCH", GetDefaultUpstreamBranch()));
@@ -48,6 +48,9 @@ namespace Microsoft.DotNet.Scripts
GetEnvironmentVariable("GITHUB_PULL_REQUEST_NOTIFICATIONS", "")
.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries));
+ Lazy> _versionFragments = new Lazy>(() =>
+ System.Environment.GetEnvironmentVariables().Cast().Where(entry => ((string)entry.Key).EndsWith("_VERSION_FRAGMENT")).ToDictionary(entry =>
+ ((string)entry.Key).Replace("_VERSION_FRAGMENT","").ToLowerInvariant(), entry => (string)entry.Value, StringComparer.OrdinalIgnoreCase));
private Config()
{
}
@@ -56,9 +59,8 @@ namespace Microsoft.DotNet.Scripts
public string Email => _email.Value;
public string Password => _password.Value;
public string DotNetVersionUrl => _dotNetVersionUrl.Value;
- public string CoreSetupVersionFragment => _coreSetupVersionFragment.Value;
- public string RoslynVersionFragment => _roslynVersionFragment.Value;
- public bool HasRoslynVersionFragment => !string.IsNullOrEmpty(RoslynVersionFragment);
+ public Dictionary VersionFragments => _versionFragments.Value;
+ public bool HasVersionFragment(string repoName) => _versionFragments.Value.ContainsKey(repoName);
public string GitHubUpstreamOwner => _gitHubUpstreamOwner.Value;
public string GitHubProject => _gitHubProject.Value;
public string GitHubUpstreamBranch => _gitHubUpstreamBranch.Value;
diff --git a/build_projects/update-dependencies/Program.cs b/build_projects/update-dependencies/Program.cs
index 99b77691e..47c787fc6 100644
--- a/build_projects/update-dependencies/Program.cs
+++ b/build_projects/update-dependencies/Program.cs
@@ -24,15 +24,8 @@ namespace Microsoft.DotNet.Scripts
bool onlyUpdate = args.Length > 0 && string.Equals("--Update", args[0], StringComparison.OrdinalIgnoreCase);
- List buildInfos = new List();
-
- buildInfos.Add(GetBuildInfo("CoreSetup", s_config.CoreSetupVersionFragment, fetchLatestReleaseFile: false));
-
- if (s_config.HasRoslynVersionFragment)
- {
- buildInfos.Add(GetBuildInfo("Roslyn", s_config.RoslynVersionFragment, fetchLatestReleaseFile: false));
- }
-
+ List buildInfos = new List(s_config.VersionFragments.Select, BuildInfo>(fragment =>
+ GetBuildInfo(fragment.Key, fragment.Value, fetchLatestReleaseFile: false)));
IEnumerable updaters = GetUpdaters();
var dependencyBuildInfos = buildInfos.Select(buildInfo =>
new BuildDependencyInfo(
@@ -90,14 +83,55 @@ namespace Microsoft.DotNet.Scripts
private static IEnumerable GetUpdaters()
{
string dependencyVersionsPath = Path.Combine("build", "DependencyVersions.props");
- yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftNETCoreAppPackageVersion", "Microsoft.NETCore.App");
- yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetPlatformAbstractionsPackageVersion", "Microsoft.DotNet.PlatformAbstractions");
- yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftExtensionsDependencyModelPackageVersion", "Microsoft.Extensions.DependencyModel");
-
- if (s_config.HasRoslynVersionFragment)
+
+ if (s_config.HasVersionFragment("aspnet"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftAspNetCoreAppPackageVersion", "Microsoft.AspNetCore.App");
+ }
+ if (s_config.HasVersionFragment("clicommandlineparser"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetCliCommandLinePackageVersion", "Microsoft.DotNet.Cli.CommandLine");
+ }
+ if (s_config.HasVersionFragment("climigrate"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetProjectJsonMigrationPackageVersion", "Microsoft.DotNet.ProjectJsonMigration");
+ }
+ if (s_config.HasVersionFragment("coresetup"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftNETCoreAppPackageVersion", "Microsoft.NETCore.App");
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetPlatformAbstractionsPackageVersion", "Microsoft.DotNet.PlatformAbstractions");
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftExtensionsDependencyModelPackageVersion", "Microsoft.Extensions.DependencyModel");
+ }
+ if (s_config.HasVersionFragment("fsharp"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftFSharpCompilerPackageVersion", "Microsoft.FSharp.Compiler");
+ }
+ if (s_config.HasVersionFragment("msbuild"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftBuildPackageVersion", "Microsoft.Build");
+ }
+ if (s_config.HasVersionFragment("nugetclient"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "NuGetBuildTasksPackageVersion", "NuGet.Build.Tasks");
+ }
+ if (s_config.HasVersionFragment("roslyn"))
{
yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftCodeAnalysisCSharpPackageVersion", "Microsoft.CodeAnalysis.CSharp");
}
+ if (s_config.HasVersionFragment("sdk"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftNETSdkPackageVersion", "Microsoft.NET.Sdk");
+ }
+ if (s_config.HasVersionFragment("templating"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetCommonItemTemplatesPackageVersion", "Microsoft.DotNet.Common.ItemTemplates");
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftDotNetTestProjectTemplates20PackageVersion", "Microsoft.DotNet.Test.ProjectTemplates.2.0");
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftTemplateEngineCliPackageVersion", "Microsoft.TemplateEngine.Cli");
+ }
+ if (s_config.HasVersionFragment("websdk"))
+ {
+ yield return CreateRegexUpdater(dependencyVersionsPath, "MicrosoftNETSdkWebPackageVersion", "Microsoft.NET.Sdk.Web");
+ }
}
private static IDependencyUpdater CreateRegexUpdater(string repoRelativePath, string propertyName, string packageId)
diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/MSBuildProject.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/MSBuildProject.cs
index f5473c278..3d201158d 100644
--- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/MSBuildProject.cs
+++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/MSBuildProject.cs
@@ -114,7 +114,7 @@ namespace Microsoft.DotNet.Cli.Utils
{
_projectRoot = msBuildExePath;
- var globalProperties = new Dictionary()
+ var globalProperties = new Dictionary(StringComparer.OrdinalIgnoreCase)
{
{ "MSBuildExtensionsPath", Path.GetDirectoryName(msBuildExePath) }
};
diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ProjectToolsCommandResolver.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ProjectToolsCommandResolver.cs
index aa26a9366..9a24f4212 100644
--- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ProjectToolsCommandResolver.cs
+++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ProjectToolsCommandResolver.cs
@@ -399,6 +399,9 @@ namespace Microsoft.DotNet.Cli.Utils
Path.Combine(AppContext.BaseDirectory, "MSBuild.dll") :
msBuildExePath;
+ Reporter.Verbose.WriteLine(string.Format(LocalizableStrings.MSBuildArgs,
+ ArgumentEscaper.EscapeAndConcatenateArgArrayForProcessStart(args)));
+
var result = new MSBuildForwardingAppWithoutLogging(args, msBuildExePath)
.GetProcessStartInfo()
.ExecuteAndCaptureOutput(out string stdOut, out string stdErr);
diff --git a/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHost.cs b/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHost.cs
new file mode 100644
index 000000000..3b5547af8
--- /dev/null
+++ b/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHost.cs
@@ -0,0 +1,152 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System.IO;
+using System.Text;
+
+namespace Microsoft.DotNet.Cli.Utils
+{
+ ///
+ /// Embeds the App Name into the AppHost.exe
+ ///
+ public static class EmbedAppNameInHost
+ {
+ private static string _placeHolder = "c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2"; //hash value embedded in default apphost executable
+ private static byte[] _bytesToSearch = Encoding.UTF8.GetBytes(_placeHolder);
+
+ ///
+ /// Create an AppHost with embedded configuration of app binary location
+ ///
+ /// The path of AppHost template, which has the place holder
+ /// The destination path for desired location to place, including the file name
+ /// Full path to app binary or relative path to appHostDestinationFilePath
+ public static void EmbedAndReturnModifiedAppHostPath(
+ string appHostSourceFilePath,
+ string appHostDestinationFilePath,
+ string appBinaryFilePath)
+ {
+ var hostExtension = Path.GetExtension(appHostSourceFilePath);
+ var appbaseName = Path.GetFileNameWithoutExtension(appBinaryFilePath);
+ var bytesToWrite = Encoding.UTF8.GetBytes(appBinaryFilePath);
+ var destinationDirectory = new FileInfo(appHostDestinationFilePath).Directory.FullName;
+
+ if (File.Exists(appHostDestinationFilePath))
+ {
+ //We have already done the required modification to apphost.exe
+ return;
+ }
+
+ if (bytesToWrite.Length > 1024)
+ {
+ throw new EmbedAppNameInHostException(string.Format(LocalizableStrings.EmbedAppNameInHostFileNameIsTooLong, appBinaryFilePath));
+ }
+
+ var array = File.ReadAllBytes(appHostSourceFilePath);
+
+ SearchAndReplace(array, _bytesToSearch, bytesToWrite, appHostSourceFilePath);
+
+ if (!Directory.Exists(destinationDirectory))
+ {
+ Directory.CreateDirectory(destinationDirectory);
+ }
+
+ // Copy AppHostSourcePath to ModifiedAppHostPath so it inherits the same attributes\permissions.
+ File.Copy(appHostSourceFilePath, appHostDestinationFilePath);
+
+ // Re-write ModifiedAppHostPath with the proper contents.
+ using (FileStream fs = new FileStream(appHostDestinationFilePath, FileMode.Truncate, FileAccess.ReadWrite, FileShare.Read))
+ {
+ fs.Write(array, 0, array.Length);
+ }
+ }
+
+ // See: https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
+ private static int[] ComputeKMPFailureFunction(byte[] pattern)
+ {
+ int[] table = new int[pattern.Length];
+ if (pattern.Length >= 1)
+ {
+ table[0] = -1;
+ }
+ if (pattern.Length >= 2)
+ {
+ table[1] = 0;
+ }
+
+ int pos = 2;
+ int cnd = 0;
+ while (pos < pattern.Length)
+ {
+ if (pattern[pos - 1] == pattern[cnd])
+ {
+ table[pos] = cnd + 1;
+ cnd++;
+ pos++;
+ }
+ else if (cnd > 0)
+ {
+ cnd = table[cnd];
+ }
+ else
+ {
+ table[pos] = 0;
+ pos++;
+ }
+ }
+ return table;
+ }
+
+ // See: https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
+ private static int KMPSearch(byte[] pattern, byte[] bytes)
+ {
+ int m = 0;
+ int i = 0;
+ int[] table = ComputeKMPFailureFunction(pattern);
+
+ while (m + i < bytes.Length)
+ {
+ if (pattern[i] == bytes[m + i])
+ {
+ if (i == pattern.Length - 1)
+ {
+ return m;
+ }
+ i++;
+ }
+ else
+ {
+ if (table[i] > -1)
+ {
+ m = m + i - table[i];
+ i = table[i];
+ }
+ else
+ {
+ m++;
+ i = 0;
+ }
+ }
+ }
+ return -1;
+ }
+
+ private static void SearchAndReplace(byte[] array, byte[] searchPattern, byte[] patternToReplace, string appHostSourcePath)
+ {
+ int offset = KMPSearch(searchPattern, array);
+ if (offset < 0)
+ {
+ throw new EmbedAppNameInHostException(string.Format(LocalizableStrings.EmbedAppNameInHostAppHostHasBeenModified, appHostSourcePath, _placeHolder));
+ }
+
+ patternToReplace.CopyTo(array, offset);
+
+ if (patternToReplace.Length < searchPattern.Length)
+ {
+ for (int i = patternToReplace.Length; i < searchPattern.Length; i++)
+ {
+ array[i + offset] = 0x0;
+ }
+ }
+ }
+ }
+}
diff --git a/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHostException.cs b/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHostException.cs
new file mode 100644
index 000000000..a20432d42
--- /dev/null
+++ b/src/Microsoft.DotNet.Cli.Utils/EmbedAppNameInHostException.cs
@@ -0,0 +1,22 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+
+namespace Microsoft.DotNet.Cli.Utils
+{
+ public class EmbedAppNameInHostException : Exception
+ {
+ public EmbedAppNameInHostException()
+ {
+ }
+
+ public EmbedAppNameInHostException(string message) : base(message)
+ {
+ }
+
+ public EmbedAppNameInHostException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+ }
+}
diff --git a/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs b/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs
index b8d85b3b7..f0a9fefbe 100644
--- a/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs
+++ b/src/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs
@@ -47,6 +47,7 @@ namespace Microsoft.DotNet.Cli.Utils
.GetEnvironmentVariable("PATH")
.Split(s_pathSeparator)
.Select(p => p.Trim(s_quote))
+ .Where(p => !string.IsNullOrWhiteSpace(p))
.Select(p => ExpandTildeSlash(p)));
_searchPaths = searchPaths;
@@ -141,5 +142,14 @@ namespace Microsoft.DotNet.Cli.Utils
}
}
+ public string GetEnvironmentVariable(string variable, EnvironmentVariableTarget target)
+ {
+ return Environment.GetEnvironmentVariable(variable, target);
+ }
+
+ public void SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarget target)
+ {
+ Environment.SetEnvironmentVariable(variable, value, target);
+ }
}
}
diff --git a/src/Microsoft.DotNet.Cli.Utils/IEnvironmentProvider.cs b/src/Microsoft.DotNet.Cli.Utils/IEnvironmentProvider.cs
index 43830b6f5..17355e4a0 100644
--- a/src/Microsoft.DotNet.Cli.Utils/IEnvironmentProvider.cs
+++ b/src/Microsoft.DotNet.Cli.Utils/IEnvironmentProvider.cs
@@ -1,6 +1,7 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+using System;
using System.Collections.Generic;
namespace Microsoft.DotNet.Cli.Utils
@@ -18,5 +19,9 @@ namespace Microsoft.DotNet.Cli.Utils
bool GetEnvironmentVariableAsBool(string name, bool defaultValue);
string GetEnvironmentVariable(string name);
+
+ string GetEnvironmentVariable(string variable, EnvironmentVariableTarget target);
+
+ void SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarget target);
}
}
diff --git a/src/Microsoft.DotNet.Cli.Utils/LocalizableStrings.resx b/src/Microsoft.DotNet.Cli.Utils/LocalizableStrings.resx
index 2ebbb5fe9..435a26de9 100644
--- a/src/Microsoft.DotNet.Cli.Utils/LocalizableStrings.resx
+++ b/src/Microsoft.DotNet.Cli.Utils/LocalizableStrings.resx
@@ -206,7 +206,7 @@
Generating deps.json at: {0}
- unable to generate deps.json, it may have been already generated: {0}
+ Unable to generate deps.json, it may have been already generated. You can specify the "-d" option before the tool name for diagnostic output (for example, "dotnet -d <toolname>": {0}
Unable to find deps.json generator project.
@@ -262,4 +262,13 @@
Unable to invoke {0} after the command has been run
-
\ No newline at end of file
+
+ MSBuild arguments: {0}
+
+
+ Unable to use '{0}' as application host executable as it does not contain the expected placeholder byte sequence '{1}' that would mark where the application name would be written.
+
+
+ Given file name '{0}' is longer than 1024 bytes
+
+
diff --git a/src/Microsoft.DotNet.Cli.Utils/Microsoft.DotNet.Cli.Utils.csproj b/src/Microsoft.DotNet.Cli.Utils/Microsoft.DotNet.Cli.Utils.csproj
index 0a124d605..14d2eb2c2 100644
--- a/src/Microsoft.DotNet.Cli.Utils/Microsoft.DotNet.Cli.Utils.csproj
+++ b/src/Microsoft.DotNet.Cli.Utils/Microsoft.DotNet.Cli.Utils.csproj
@@ -29,7 +29,6 @@
-
diff --git a/src/Microsoft.DotNet.Cli.Utils/xlf/LocalizableStrings.cs.xlf b/src/Microsoft.DotNet.Cli.Utils/xlf/LocalizableStrings.cs.xlf
index 449c774d4..e344ea524 100644
--- a/src/Microsoft.DotNet.Cli.Utils/xlf/LocalizableStrings.cs.xlf
+++ b/src/Microsoft.DotNet.Cli.Utils/xlf/LocalizableStrings.cs.xlf
@@ -140,8 +140,8 @@
- unable to generate deps.json, it may have been already generated: {0}
- Soubor deps.json se nepodařilo vygenerovat, protože už je pravděpodobně vygenerovaný: {0}
+ Unable to generate deps.json, it may have been already generated. You can specify the "-d" option before the tool name for diagnostic output (for example, "dotnet -d <toolname>": {0}
+ Soubor deps.json se nepodařilo vygenerovat, protože už je pravděpodobně vygenerovaný: {0}
@@ -244,6 +244,21 @@
Běhové prostředí:
+
+ MSBuild arguments: {0}
+ MSBuild arguments: {0}
+
+
+
+ Unable to use '{0}' as application host executable as it does not contain the expected placeholder byte sequence '{1}' that would mark where the application name would be written.
+ Unable to use '{0}' as application host executable as it does not contain the expected placeholder byte sequence '{1}' that would mark where the application name would be written.
+
+
+
+ Given file name '{0}' is longer than 1024 bytes
+ Given file name '{0}' is longer than 1024 bytes
+
+