Fix ANCM search for dotnet.exe (#18311)
This commit is contained in:
parent
116799fa70
commit
deceebc062
|
|
@ -145,9 +145,10 @@ HostFxrResolver::GetHostFxrParameters(
|
|||
}
|
||||
|
||||
BOOL
|
||||
HostFxrResolver::IsDotnetExecutable(const std::filesystem::path & dotnetPath)
|
||||
HostFxrResolver::IsDotnetExecutable(const std::filesystem::path& dotnetPath)
|
||||
{
|
||||
return ends_with(dotnetPath, L"dotnet.exe", true);
|
||||
std::wstring filename = dotnetPath.filename().wstring();
|
||||
return equals_ignore_case(filename, L"dotnet.exe");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ConfigUtilityTests.cpp" />
|
||||
<ClCompile Include="dotnet_exe_path_tests.cpp" />
|
||||
<ClCompile Include="GlobalVersionTests.cpp" />
|
||||
<ClCompile Include="Helpers.cpp" />
|
||||
<ClCompile Include="inprocess_application_tests.cpp" />
|
||||
|
|
@ -71,6 +72,17 @@
|
|||
<Project>{d57ea297-6dc2-4bc0-8c91-334863327863}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Fake\hello-dotnet.exe">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Fake\hello-dotnet.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Fake\hostfxr.dll">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemDefinitionGroup />
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
|
|
@ -185,4 +197,4 @@
|
|||
</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1 @@
|
|||
this a is faked hello-dotnet.dll used for tests
|
||||
|
|
@ -0,0 +1 @@
|
|||
this a is faked hello-dotnet.exe used for tests
|
||||
|
|
@ -0,0 +1 @@
|
|||
this a is faked hostfxr.dll used for tests
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <array>
|
||||
#include "fakeclasses.h"
|
||||
#include "HostFxrResolver.h"
|
||||
|
||||
using ::testing::_;
|
||||
using ::testing::NiceMock;
|
||||
|
||||
// Externals defined in inprocess
|
||||
namespace InprocessTests
|
||||
{
|
||||
|
||||
TEST(Dotnet_EXE_Path_Tests, EndWith_dotnet)
|
||||
{
|
||||
HostFxrResolver resolver;
|
||||
std::filesystem::path hostFxrDllPath;
|
||||
std::vector<std::wstring> arguments;
|
||||
ErrorContext errorContext;
|
||||
auto currentPath = std::filesystem::current_path();
|
||||
auto appPath= currentPath /= L"Fake";
|
||||
auto processPath = L"hello-dotnet";
|
||||
auto args = L"-a --tag t -x";
|
||||
std::filesystem::path knownDotnetLocation=L"C:/Program Files/dotnet";
|
||||
// expected no exception should be thrown
|
||||
HostFxrResolver::GetHostFxrParameters(
|
||||
processPath,
|
||||
appPath,
|
||||
args,
|
||||
hostFxrDllPath,
|
||||
knownDotnetLocation,
|
||||
arguments,
|
||||
errorContext);
|
||||
|
||||
ASSERT_TRUE(ends_with(arguments[0], L"\\Fake\\hello-dotnet.exe", true));
|
||||
ASSERT_STREQ(arguments[1].c_str(), L"-a");
|
||||
ASSERT_STREQ(arguments[2].c_str(), L"--tag");
|
||||
ASSERT_STREQ(arguments[3].c_str(), L"t");
|
||||
ASSERT_STREQ(arguments[4].c_str(), L"-x");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue