1
0

Using AppContext.BaseDirectory - as Assembly.Location might not be available in single-file applications.

This commit is contained in:
2022-06-20 18:55:18 +02:00
parent 65bca0a922
commit 42ae72a1b7
3 changed files with 8 additions and 11 deletions

View File

@@ -208,7 +208,7 @@ namespace Microsoft.EntityFrameworkCore
if (!Path.IsPathRooted(path)) if (!Path.IsPathRooted(path))
{ {
if (string.IsNullOrWhiteSpace(options.AbsoluteBasePath)) if (string.IsNullOrWhiteSpace(options.AbsoluteBasePath))
options.AbsoluteBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); options.AbsoluteBasePath = AppContext.BaseDirectory;
path = Path.Combine(options.AbsoluteBasePath, path); path = Path.Combine(options.AbsoluteBasePath, path);
} }

View File

@@ -521,7 +521,7 @@ namespace AMWD.Common.Tests.Utilities
public void ShouldCreateDefaultFile() public void ShouldCreateDefaultFile()
{ {
// arrange // arrange
string executingAssemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string executingAssemblyDir = AppContext.BaseDirectory;
string filePath = Path.Combine(executingAssemblyDir, "crypto.key"); string filePath = Path.Combine(executingAssemblyDir, "crypto.key");
// act // act

View File

@@ -1,5 +1,4 @@
using System.IO; using System.IO;
using System.Reflection;
using System.Text; using System.Text;
namespace System.Security.Cryptography namespace System.Security.Cryptography
@@ -19,16 +18,14 @@ namespace System.Security.Cryptography
/// <param name="keyFile">The (absolute) path to the crypto key file. On <c>null</c> the file 'crypto.key' at the executing assembly location will be used.</param> /// <param name="keyFile">The (absolute) path to the crypto key file. On <c>null</c> the file 'crypto.key' at the executing assembly location will be used.</param>
public CryptographyHelper(string keyFile = null) public CryptographyHelper(string keyFile = null)
{ {
if (string.IsNullOrWhiteSpace(keyFile))
keyFile = "crypto.key";
if (!Path.IsPathRooted(keyFile))
{
string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
keyFile = Path.Combine(dir, keyFile);
}
masterKeyFile = keyFile; masterKeyFile = keyFile;
if (string.IsNullOrWhiteSpace(masterKeyFile))
masterKeyFile = "crypto.key";
if (!Path.IsPathRooted(masterKeyFile))
masterKeyFile = Path.Combine(AppContext.BaseDirectory, masterKeyFile);
string pw = File.Exists(masterKeyFile) ? File.ReadAllText(masterKeyFile) : null; string pw = File.Exists(masterKeyFile) ? File.ReadAllText(masterKeyFile) : null;
if (string.IsNullOrWhiteSpace(pw)) if (string.IsNullOrWhiteSpace(pw))
File.WriteAllText(masterKeyFile, GetRandomString(64)); File.WriteAllText(masterKeyFile, GetRandomString(64));