Fix ANCM search for dotnet.exe (#18311)
This commit is contained in:
parent
116799fa70
commit
deceebc062
|
|
@ -145,9 +145,10 @@ HostFxrResolver::GetHostFxrParameters(
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL
|
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
|
void
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="ConfigUtilityTests.cpp" />
|
<ClCompile Include="ConfigUtilityTests.cpp" />
|
||||||
|
<ClCompile Include="dotnet_exe_path_tests.cpp" />
|
||||||
<ClCompile Include="GlobalVersionTests.cpp" />
|
<ClCompile Include="GlobalVersionTests.cpp" />
|
||||||
<ClCompile Include="Helpers.cpp" />
|
<ClCompile Include="Helpers.cpp" />
|
||||||
<ClCompile Include="inprocess_application_tests.cpp" />
|
<ClCompile Include="inprocess_application_tests.cpp" />
|
||||||
|
|
@ -71,6 +72,17 @@
|
||||||
<Project>{d57ea297-6dc2-4bc0-8c91-334863327863}</Project>
|
<Project>{d57ea297-6dc2-4bc0-8c91-334863327863}</Project>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</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 />
|
<ItemDefinitionGroup />
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
|
@ -185,4 +197,4 @@
|
||||||
</AdditionalDependencies>
|
</AdditionalDependencies>
|
||||||
</Lib>
|
</Lib>
|
||||||
</ItemDefinitionGroup>
|
</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