Powershell: рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЕрдкреНрд░реИрд▓ 2019  ┬╖  70рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PowerShell/PowerShell

рдХрд┐рд╕реА рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдХреА рдореВрд▓ рд▓рд╛рдпрдмреНрд░реЗрд░реА рд╕реЗ p / invoke рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рд▓рд╛рдпрдмреНрд░реЗрд░реА рдХреЛ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдЬреИрд╕реЗ DLL p / invoking рдХрд░ рд░рд╣рд╛ рд╣реИред

PowerShell Core 6.1.0 рдореЗрдВ рдпрд╣ _use work_ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди 6.2.0-рдкреНрд░реАрд╡реНрдпреВ 1 рдФрд░ 6.2.0-рдкреНрд░реАрд╡реНрдпреВ 2 рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реИред рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдВрдбреЛрдЬ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА SkiaSharp.dll рдХреЗ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред Https://github.com/PowerShell/PowerShell/issues/8861#issuecomment -462362391 рджреЗрдЦреЗрдВ рдФрд░ рдпрд╣ рдЙрд╕ рдлреИрд╢рди рдореЗрдВ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрд╛рдЧрд╛ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

Install-Module PSWordCloud
New-WordCloud

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

cmdlet New-WordCloud at command pipeline position 1
Supply values for the following parameters:
InputObject:

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

new-wordcloud : The type initializer for 'PSWordCloud.WCUtils' threw an exception.
At line:1 char:1
+ new-wordcloud
+ ~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException

$Error[0].Exception.GetBaseException() | Format-List * -F рдкреИрджрд╛рд╡рд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдзрд╛рд░ рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

Message        : Unable to load DLL 'libSkiaSharp' or one of its dependencies: The specified module could not be
                 found. (Exception from HRESULT: 0x8007007E)
TypeName       :
Data           : {}
InnerException :
TargetSite     : IntPtr sk_fontmgr_ref_default()
StackTrace     :    at SkiaSharp.SkiaApi.sk_fontmgr_ref_default()
                    at SkiaSharp.SKFontManager.get_Default()
                    at PSWordCloud.WCUtils..cctor()
HelpLink       :
Source         : SkiaSharp
HResult        : -2146233052

рдкрд░реНрдпрд╛рд╡рд░рдг рдбреЗрдЯрд╛

Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0тАж}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

_Note: _ рдПрдХ рдореИрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдзрдиреНрдпрд╡рд╛рдж @steviecoaster!) рдФрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рднреА рд╣реБрдЖред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдкрд░ рднреА рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

/ cc @ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА

Issue-Question Resolution-Fixed

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@rkeithhill

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ recompile рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ netstandard2 рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реИред рд▓реЗрдХрд┐рди AFIICT DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо рдорд╛рди рдПрдХ рд╕реНрдерд┐рд░ рд╕рдордп рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред :-(

FWIW рдЖрдк DllImport рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкреАрдПрд╕рдИрдПрд╕ рдХреЗ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рджреЗрд╢реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рдЖрдзрд╛рд░ рдирд╛рдо рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рддреЛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рд╢рд╛рдпрдж рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ LoadLibrary / dlopen рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рднреА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рд╡рд┐рдзрд┐ JIT'd рдирд╣реАрдВ рд╣реИ рддрдм рддрдХ рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 70 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@adityapatwardhan рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░

рдЖрдк procmon рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ HintPath рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░

рдореИрдВ рдЗрд╕реЗ рдПрдХ рд▓реБрдХ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рджреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд╕реАрдзреЗ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдпрд╣ рдореБрдЦреНрдп SkiaSharp.dll рджреНрд╡рд╛рд░рд╛ рд╣реА рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдореИрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рд╕рдВрднрд╛рд╡рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлрд╛рдЗрд▓реЗрдВ рднреА рд╣реИрдВ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИрдВред

рд▓реЗрдХрд┐рди рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ рдПрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рд╕рдВрднрд╡рддрдГ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

MSFT рдЯреАрдо .рдиреЗрдЯ рдХреЛрд░ 3.0 рдореЗрдВ vNext p / invokes рдкрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддреА рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЛрдВрдиреЗ 2.1 рдореЗрдВ рдХреБрдЫ рд╡рд╛рдкрд╕ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдордиреЗ PowerShell рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд dll рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рд╛ рд╣реИред

6.2.0-рдкреНрд░реАрд╡реНрдпреВ 2 рдореЗрдВ # 8073 рдФрд░ рдХрдИ Internal -рдорд╛рд░реНрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдПред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдХреНрдпрд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред ЁЯШХ

рдкреАрдЖрд░ рдкрд░рд┐рд╡рд░реНрддрди рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдбреАрдПрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЬреАрдПрд╕реА рд╕реЗ рд╣реИред рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ dll рд╕рдВрджрд░реНрдн рджреВрд╕рд░рд╛ dll рдФрд░ рдСрдЯреЛ dll рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдХреЛрд░ рдирд╣реАрдВ PowerShell рдХрд░рддрд╛ рд╣реИ) dll рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ hllpath рдХреЛ dll рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред

@iSazonov рдореИрдВрдиреЗ рдЕрдкрдиреЗ csproj рдореЗрдВ рдХреБрдЫ HintPath рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗ, рд▓реЗрдХрд┐рди рдЬрдм рдореБрдЭреЗ dotnet publish рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИред рдПрдХ рдмрд╛рд░ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдкрдврд╝рдиреЗ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ HintPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд╣рд░реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ __ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред SkiaSharp рдЕрд╕реЗрдВрдмрд▓реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рди / рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП HintPath рдХреЛ рдЬреЛрдбрд╝рдирд╛ Skia DLL рдпрд╛ рдЙрди рдкрдереЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рд░рдирдЯрд╛рдЗрдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрд░рд╛ csproj рд╣реИ:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="PowerShellStandard.Library" Version="5.1.1" PrivateAssets="All" />
    <PackageReference Include="SkiaSharp" Version="1.68.0" />
    <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="1.68.0" />
  </ItemGroup>

</Project>

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рднрд╛рд╡ рдХреЗ рдЬреЛрдбрд╝рд╛ (рдПрдХ рдмрд┐рд▓реНрдб / рдкрдмреНрд▓рд┐рд╢ рдЯрд╛рдЗрдо рд╡рд╛рд░реНрдирд┐рдВрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рдареАрдХ рд╣реИ, рд╡реЗ рддрдм рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдкреНрд░рдХрд╛рд╢рди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ):

  <ItemGroup>
    <Reference Include="libSkiaSharp">
        <HintPath>win-x86/libSkiaSharp.dll</HintPath>
        <HintPath>win-x64/libSkiaSharp.dll</HintPath>
        <HintPath>osx/libSkiaSharp.dylib</HintPath>
        <HintPath>linux-x64/libSkiaSharp.dylib</HintPath>
    </Reference>
</ItemGroup>

HintPath рдкрд░ рдореИрдВрдиреЗ рдЬреЛ рдкрдврд╝рд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдпрд╣ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ DLL рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХрд┐рди рд░рд╛рд╕реНрддреЛрдВ рдкрд░ рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдХрд┐ DLL p / рдЗрдирд╡реЙрдЗрд╕ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп DLL рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

_That_ HintPath рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди-рд╕рдордп рд╣реИред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрд╡рд╛рдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдФрд░ рдореИрдВ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ?

@ vexx32 рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░рд▓ рд░реЗрдкреЛ рдХреЛрдб рд╣реИ рддреЛ рдЖрдк CoreCLR рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореИрдВ рдЕрднреА рддрдХ рдПрдХ рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВред рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд░реАрдХреНрд╖рд╛ рджреЗрдиреА рд╣реЛрдЧреА рдФрд░ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдХреИрд╕реЗ рдЬрд╛рддреА рд╣реИред

@ рдЬреЗрдХреБрд▓ рд╕реЗ рдПрдХ рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдПрдХ рд╕реНрдЯреЙрдк-рдЧреИрдк рд╕рдорд╛рдзрд╛рди рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред Cmdlet рдФрд░ рдореБрдЦреНрдп Skia DLL рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ PSM1 рд╕реЗ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред

Add-Type -TypeDefinition @"
    using System.Runtime.InteropServices;

    public class DllLoadPath
    {
        [DllImport("kernel32", CharSet=CharSet.Unicode)]
        public static extern int SetDllDirectory(string NewDirectory);
    }
"@

# ...

[DllLoadPath]::SetDllDirectory($NativeRuntimeFolder)

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _requires_ рдЕрддрд┐рд░рд┐рдХреНрдд p / invoke рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред рдореИрдВ рднреА рдмрд╣реБрдд рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБ рдХрд┐ рдпрд╣рд╛рдБ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдХ рдЦреЛрдЬ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП SkiaSharp.dll рдХреА рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрде рдХреЛ рдХрд┐рд╕ рд░реВрдк рдореЗрдВ рдмрджрд▓рд╛ рдФрд░ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ред

@ vexx32 рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдХреНрдпрд╛ рдореБрдЭреЗ рд░реЗрдкреНрд░реЛ рдореЗрдВ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛? рд╢рд╛рдпрдж рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЕрдЧрд░ PSWordCloud?

PS> Install-Module PSWordCloud                                                               
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y

PS> New-WordCloud                                                                            
cmdlet New-WordCloud at command pipeline position 1
Supply values for the following parameters:
InputObject:
Path:

PS> $PSVersionTable                                                                          
Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.18885
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0тАж}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ 2.1.1 рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред

рдпрджрд┐ рдЖрдк 2.1.0 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рд╡рд┐рдлрд▓рддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдкреА / рдЗрдирд╡реЛрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдХрдореА рд╣реИред

рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдм рдлрдЯрдХрд╛рд░ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореЗрдВ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

@ vexx32 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо FileList psd1 рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЬрдм рдореИрдВрдиреЗ FileList рд╕реЗ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдирд┐рдХрд╛рд▓ рджреАрдВ, рддреЛ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдФрд░ рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддрд╛ред

рдРрд╕рд╛ рдХреНрдпрд╛? рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИред рдирд╣реАрдВ, рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рд╣рдЯрд╛ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╣рд╛ рд╣реИред

рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ DLL рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдЪрд╛рдирдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо psd1 рдХреЗ рдлрд╝рд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .psd1 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ "if" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ dll рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@iSazonov рдпрд╣ # 5541 рд╣реИ ред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рджреВрдВрдЧрд╛ред

рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рдХреНрдпрд╛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ _now_ рдЕрдЧрд░ рдлрд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдЙрди рд╕рднреА) рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ... рдореБрдЭреЗ рдкреА / рдЗрдирд╡реЛрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛! ЁЯШК

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдирд╣реАрдВрдВ, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рд╣реИред :(

рд╣рдо Assembly.Load() рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рд╣рдордиреЗ 6.2.0-рдкреНрд░реАрд╡реНрдпреВ 2 рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╣рдордиреЗ GAC рдореЗрдВ рджреЗрдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ DLL рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕рд╛рдЗрдб рдЗрдлрд╝реЗрдХреНрдЯ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдлрд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдореЗрдВ DLL рднреА рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдордЭ рдЖрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЙрдХ рдЗрд╢реНрдпреВ рдЦреБрд▓рд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдХрд┐рд╕реА рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрдЧрд╛ рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рдд рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рдЙрд╕ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВ! рдЕрднреА рдХреЗ рд▓рд┐рдП рдкреА / рдЗрдирд╡реЛрдХ рд╕реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдордЭрджрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ PrivateData рдореЗрдВ рд╣рдо RuntimeLibPaths рдирд╛рдордХ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╣реИрд╢рдЯреЗрдмрд▓ рд╣реИ рдЬрд╣рд╛рдБ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╛рдореЛрдВ / рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ, рдФрд░ рдорд╛рди рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкрде рд╣реИрдВред рдЙрдкрдпреБрдХреНрдд рдлрд╝реЛрд▓реНрдбрд░ (рдУрдВ) рдХреЛ рдЖрдпрд╛рдд рдкрд░ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ PowerShell рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдкрд░ dll рдЦреЛрдЬ рдкрде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЙрдХ рдЗрд╢реНрдпреВ рдЦреБрд▓рд╛ рд╣реИ?

рд╣рдордиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@adityapatwardhan @ SteveL-MSFT @TylerLeonhardt (рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ) рдореБрдЭреЗ рдпрд╣ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдЪреАрдЬреЛрдВ рдкрд░ рднреА рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ... рддреЛ рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдЪрд╛рд╣рд┐рдПред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдиреЗрдЯ рдХреЛрд░ рд╣реА рдореЗрдВ рджреЗрд╢реА рдЗрдВрдЯрд░реЙрдк рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рднреА рдореИрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдБ рдпрд╣ рдкреГрд╖реНрда MS рдбреЙрдХреНрд╕ рдореЗрдВ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдореЛрдиреЛ рдпрд╛ рдХреБрдЫ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрджрд┐ рдпрд╣ рдореЛрдиреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ, рддреЛ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдХ рдУрдПрд╕ рдкрд░ рдореЛрдиреЛ рдореЗрдВ _bug рд╣реИ рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдкрдереЛрдВ рдХреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдореНрдорд╛рдирд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ ...

PowerShell ... рдХреЛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ _is_ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рд╕реЗ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

@ vexx32 рдХреЛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк C # рдореЗрдВ рдПрдХ

@ steveL-msft рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдХрд╣реАрдВ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ, рдЕрднреА рднреА рдХреБрдЫ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореБрдЦреНрдп SkiaSharp.dll рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓ lib рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PS рдХреЗ рд▓рд┐рдП рдЬреЛ @adityapatwardhan рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл PowerShell рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдРрд╕реА рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдкреИрдХреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдореИрдВ рдкреАрдПрд╕ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рдХреНрдЬрд░реА рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдкреИрдХреЗрдЬ рдпрд╛ рддреАрди рдпрд╛ рдЕрдзрд┐рдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЧреИрд▓рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЦреЛрдЬ рдФрд░ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рд╣реИред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ PS рдПрдХ рдХреНрд░реЙрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓ рд╣реИ, рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рд╣рдореЗрдВ рдкреИрдХреЗрдЬрдореИрдиреЗрдЬрдореЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ nupkg рд╕реЗ рдкреНрд░рддрд┐-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдбреЗрдХ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИред : рднреНрд░рдорд┐рдд:

@ vexx32 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВ https://github.com/PowerShell/PowerShellGet/issive/3/3

CoreFX 3.0 рдореЗрдВ рд╣рдо рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд┐рдиреЛрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирдП рдПрдкреАрдЖрдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рд╕рдбрд╝рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдореЛрдиреЛ рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕рдорд╛рдзрд╛рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:

  1. рдореИрдХ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЙрдбреНрдпреВрд▓ рд░реВрдЯ рдореЗрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЬрдЧрд╣ рд╣реИ рдЬреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдЙрдиреНрд╣реЗрдВ рдордЬрд╝рдмреВрддреА рд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
  2. рд╡рд┐рдВрдбреЛрдЬ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ 32 рдпрд╛ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдкрд░ рдПрдХ ScriptsToProcess рдкреА / рдЗрдирд╡реЛрдХ рд╣реИ, рдЬреЛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдорд╛рди рд╣реИред

рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ @TylerLeonhardt рдЖрдЬ рдЕрдкрдиреА рд╕реНрдЯреНрд░реАрдо рд╕реЗ

@ vexx32 рдХреЛ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк C # рдореЗрдВ рдПрдХ

рдирд╣реАрдВрдВ: C # рдореЗрдВ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ

C # рдореЗрдВ рдЖрдк рдпрд╛ рддреЛ:

  1. рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо _separate рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ _one рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЦреЛрдЬ рдкрде_ рд╣реИред
  2. рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ, рдФрд░ _NuGet package_ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВ, рдФрд░ nuget рдЖрдкрдХреЛ рдПрдХ рдкрде рдкреНрд░рддрд┐рд░реВрдк рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╣рд╛рдБ рд░рдЦрдиреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ / msbuild рдЖрдкрдХреЗ рд▓рд┐рдП рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред

@ vexx32 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВ PowerShell / PowerShellGet # 273

рдирд╣реАрдВрдВ: рдпрд╣ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ

рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрдЧ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рд╕реЗ PowerShell 6.2 @ vexx32 рдХреЛ рднреА рдРрд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ _just Windows_ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЦреЛрдЬ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PowerShell рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдкреА / рдЗрдирд╡реЛрдХ рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ _workaround_ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐, _рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдИ p / invoke_ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЬреЛ рднреА рдХрд╛рд░рдг рд╕реЗ PowerShell рдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рдХреА рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк DllIport рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд░рд╛рд╕реНрддреЗ рд╣реИрдВ рдкреАрдПрд╕ рджреНрд╡рд╛рд░рд╛ рднрд░реА рдЧрдИ рдПрдХ рд╕рднрд╛ред

рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдпрд╣ рд╣реИ ... рдмреЗрд╣рдж рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдорд┐рддреНрд░ред ЁЯШЕ

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдФрд░ рд╕рднреА рдпреВрдирд┐рдХреНрд╕ рджреЗрд╢реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рдирд╛рдо рдЯрдХрд░рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕реЗ рдЖрдк рдкреА / рдЗрдирд╡реЙрдЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЦреЛрдЬ рдкрдереЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк x86 рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдПрдЬрд╝реНрдпреЛрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ x86 рдкрд░ рдХреБрдЫ рдЕрдЬреАрдм рдХрд╛рд░рдг рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдиред)

рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ psm1 рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рджреЗрд╢реА рдмрд╛рдЗрдирд░реА рдХреЛ рдкреВрд░реНрд╡-рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдиреЛрдЯ: рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд▓рдХреНрд╖рд┐рдд / рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ:

# Module PSM1 File
$binPath = Join-Path $PSScriptRoot bin $(if ($IsWindows) {"Windows"} else {"Linux"})
Add-Type -Path $binPath\Acme.Api.dll

рдФрд░ рдпрд╣ C # рдХреЛрдб рд╣реИ рдЬреЛ Acme.Api.dll рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ

[Flags]
public enum DLOpenFlags
{
    RTLD_LAZY = 1,
    RTLD_NOW = 2,
    RTLD_LOCAL = 4,
    RTLD_GLOBAL = 8,
}

public static class LinuxNativeMethods
{
    [DllImport("libdl.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    public static extern IntPtr dlopen(
        string dlToOpen, 
        DLOpenFlags flags);
}

public static class Win32NativeMethods
{
    [DllImport("kernel32.dll", EntryPoint="LoadLibraryW")]
    public static extern IntPtr LoadLibrary(
        [InAttribute, MarshalAs(UnmanagedType.LPWStr)] string dllToLoad);
}

public static class FooNativeMethods
{
    // On Linux/macOS the shared lib must be named Foo.so and not libFoo.so
    public const string LibName = "Foo";

    static FooNativeMethods()
    {
        string assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) 
        {
            string nativeDllPath = Path.Combine(assemblyDir, "Windows", $"{LibName}.dll");
            LibHandle = Win32NativeMethods.LoadLibrary(nativeDllPath);
        }
        else
        {
            string nativeSOPath = Path.Combine(assemblyDir, "Linux", $"{LibName}.so");
            LibHandle = LinuxNativeMethods.dlopen(nativeSOPath, DLOpenFlags.RTLD_LAZY);
        }
    }

    public static IntPtr LibHandle { get; private set; }

    [DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
    public static extern int getLastError(
        StringBuilder buffer,
        ref int bufferLength);

    ...
}

@ vexx32 рдЖрдк CoreCLR рд░реЗрдкреЛ рдореЗрдВ рдкрд░рд╛рдорд░реНрд╢ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

@rkeithhill рдпрд╣ рдХреЗрд╡рд▓ .NET рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ .NET рдмрд╛рдЗрдирд░реА рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЦреБрдж рдХреЛ рдПрдХ рджреЗрд╢реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП P / invoke рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдореЗрд░рд╛ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рддреАрд╕рд░реА рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ SkiaSharp)ред рдореИрдВ рдЕрдкрдиреЗ рдмрд╛рдЗрдирд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЙрд╕реА рд╕рдордп рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдХреЛрдб рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рдореМрдЬреВрдж рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдФрд░ рд╕реНрдХрд╛рдИрдЖрд░реНрд╢ рд▓реЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред

@isazonov рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЕрдм рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ .net рдХреЛрд░ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдмрд╕ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

PowerShell рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрдпреЛрдЧрд╡рд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЦреЛрдЬ рдкрдереЛрдВ рд╕реЗ рдХреБрдЫ рдорд╛рдирдХ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рджреЗрд╢реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╣реА рдирд╛рдЬреБрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдХрд╛рдоред

@ vexx32

рдореБрдЭреЗ рдПрдХ .NET рдмрд╛рдЗрдирд░реА рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЦреБрдж рдХреЛ рдПрдХ рджреЗрд╢реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП P / invoke рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЕрд╕рдлрд▓рддрд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЙрд╣, рдареАрдХ рдпрд╣реА рдХреЛрдб рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рджреЛрдиреЛрдВ рдкрд░ 6.2 рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд╕рдВрд╢реЛрдзрд┐рдд, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдореИрдВ рдЗрд╕реЗ рдХрдорд╛рдВрдб рдЗрдВрд╕реНрдЯреЗрдВрдЯреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ .... рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдпрд╣ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ PowerShell рдХреЛ .net рдХреЛрд░ рд╕реЗ рдХрдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВ!

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ... рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрдм рддрдХ рдкрд╛рд╡рд░рд╢реЗрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ ... рдпрд╣ рдХрд░рддрд╛ рд╣реИред

рджрд░реНрдж рд╣реЛрдиреЗ рдкрд░ рдЦреБрд╢ рд╣реЛ рдЬрд╛рдирд╛ред рдмрд╕ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдкреА / рдЗрдирд╡реЙрдЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред :-)

@ vexx32 рдореБрдЭреЗ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рджрд┐рдЦрд╛рдИ

рдХреА рддрд░рд╣ред рдпрд╣ рд╡рд╣ рд▓реЗрдЖрдЙрдЯ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдмрд┐рд▓реНрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рдЬреЛ рдХреБрдЫ рднреА рдореИрдВ рдкреА / рдЗрдирд╡реЛрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрде рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рд░реВрдЯ (рдЬреЛ рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдирд╛рдо рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ) рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

PSWordCloud/
|- PSWordCloudCmdlet.dll
|- SkiaSharp.dll
|- libSkiaSharp.so
|- libSkiaSharp.dylib
|- win-x86/
  |- libSkiaSharp.dll
|- win-x64/
  |- libSkiaSharp.dll

SkiaSharp.dll .NET рд╣реИ, рдФрд░ рдореЗрд░реЗ рдореБрдЦреНрдп cmdlet dll рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрднрд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рд╣реИред рдЪрд╛рд░ libSkiaSharp рдлрд╛рдЗрд▓реЗрдВ рдореВрд▓ рдкреНрд░рддрд┐-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо DLL рд╣реИрдВред рдореИрдВ SkiaSharp.dll рдореЗрдВ рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ DLL рдХреЛ рдкреА / рдЗрдирд╡реЙрдЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдкрде рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЗрд╕рд▓рд┐рдП ... рдореЗрд░реЗ рдкрд╛рд╕ .NET рдирд┐рд░реНрднрд░рддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдпрд╣ DllImport рдХреЗ рд╕рд╛рде рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ; рд╕рдЯреАрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо / рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ (рд▓реЗрдХрд┐рди рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╛рдо рдЯрдХрд░рд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред

@Rkeithhill рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ

_Ideally_, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рд╕рднреА рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, /PSWordCloud/runtime/<platform>/ рдЬреИрд╕реЗ рдХреБрдЫ - рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, PowerShell рдиреЗ рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдкрде рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рд╛ рд╣реИ, рдХреЗрд╡рд▓ рд░реВрдЯ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВред рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ DllImport рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕реНрдерд╛рди рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди (рдХрдо рд╕реЗ рдХрдо рдореИрдХ / рд▓рд┐рдирдХреНрд╕ рдкрд░) рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ _all_ рдЬреЛ рджреЗрд╢реА рд░рдирдЯрд╛рдЗрдо рд▓реЛрдб рдкрдереЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ PowerShell рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ $env:Path рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ 6.2 рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд╕реЗ, рддрд╛рдХрд┐ рдпрд╣ рднреА рдЯреВрдЯ рдЬрд╛рдП), рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдЪрд░ рдХрд╛ рдПрдХ рдЯрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрдпрд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЪрд╛рдирдХ рдЖрдкрдХреЗ рдкрде рдЪрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _has_ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; PowerShell рдХреЗ рдкрд╛рд╕ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдкрдереЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдпрд╣ .NET рдХреЛрд░ рдХреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛред рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдкрде рдпрд╛ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╕реБрдЭрд╛рдКрдВрдЧрд╛, рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдкреНрд░рддрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдХреБрдЫ рдХреЛ рдХреБрдЫ рдореВрд▓ рдХреЛрдб рдХреЛ рдкреА / рдЗрдирд╡реЙрдЗрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдФрд░ @ vexx32 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЗрдВ рджреЗрд╢реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрд╕ рдЪрд░ рдХрд╛ рдПрдХ рдЯрди рдкрде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ

рд╕рд╣рдордд рдФрд░ рдЗрд╕реА рддрд░рд╣, рдореИрдВ SetDllDirectory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рднреА (pwsh) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╣реИред рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐ рдУрдПрд╕-рдХреЙрдореНрдмреЛ рдкреНрд░рддрд┐ рджреЗрд╢реА рдбреАрдПрд▓рдПрд╕ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рднреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрди рджреЗрд╢реА рдбреАрдПрд▓рдПрд╕ рдХреЛ рдкреНрд░реА-рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдХрд╣рд╛, рдЕрдЧрд░ рдХреЛрдИ рдЖрдкрдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореВрд▓ dll рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕ IMO рдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ vexx32 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ " dlopen macOS рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рджреЗ рджреВрдБрдЧрд╛ (рдореИрдХ VMs рдереЛрдбрд╝рд╛ ... рдЕрдЬреАрдм рд╣реЗ), рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рд╕реЗ, рдореИрдХ .so рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рд╣реЛрдЧрд╛ - - рдЕрдзрд┐рдХрд╛рдВрд╢ рдореВрд▓ рджреЗрдпрддрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдореИрдХ рдкрд░ рд╕рдВрджрд░реНрдн рджреЗрдЦрддрд╛ рд╣реВрдВ, рд╡реЗ .dylib рд▓рдЧрддреЗ рд╣реИрдВред

рдЕрд╕реЗрдВрдмрд▓реА рдпрд╣рд╛рдВ рдЕрдкрдирд╛ рдкреНрд░реАрд▓реЛрдбрд┐рдВрдЧ рдХрд░рддреА рд╣реИ (рдХрдо рд╕реЗ рдХрдо, рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдХрд░рддрд╛ рд╣реИ ...), рдореБрдЭреЗ рдЕрднреА рд╕рдм рдХреБрдЫ рд╡рд┐рд╢реЗрд╖-рдорд╛рдорд▓рд╛ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреАрдПрд╕ рдХреИрд╕реЗ рдкрде рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред : /

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ macOS .dylib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рддреАрди рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреИрд╕реЗ:

public static class FooNativeMethods
{
    // This unfortunately requires that you compile this assembly twice - once with WIN32 defined and again with
    // it not defined.
#if WIN32        
    public const string LibName = "Foo";
#elif MACOS
    public const string LibName = "libFoo.dylib";
#else
    public const string LibName = "libFoo.so";
#endif      

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ recompile рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ netstandard2 рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реИред рд▓реЗрдХрд┐рди AFAICT DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо рдорд╛рди рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдХрд▓рди рд╕рдордп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред :-(

рд╣рд╛рдБред рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреЙрд╡рд░рд╢реЗрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рдордВрдЪ рдкрд░ рдЪреЗрдХ рдХреЗ рд╕рд╛рде Add-Type -TypeDefinition $srcString рд╕рд╛рде рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдСрди-рдЗрдВрдкреЛрд░реНрдЯ рд╕рдВрдХрд▓рди рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ ScriptsToProcess рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢реБрдХреНрд░ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MacOS рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП libdl.so рдПрдХ рд╡реИрдз рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ?

рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рд╣рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ЁЯШД

@ vexx32 рдХреНрдпрд╛ рдЖрдкрдиреЗ рдореЛрдиреЛ рдореЗрдкрд▓ рдХреЛ рджреЗрдЦрд╛? рд╕реБрд╡рд┐рдзрд╛ рд╢рд░реНрддреЛрдВ (рдЖрд░реНрдЪ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдЖрджрд┐) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╢рд╛рдпрдж SkiaSharp.dll рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ .NET рдХреЛрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд░рди рдХрд░рддреЗ рд╕рдордп рдореЛрдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореИрдВ рдпрд╣рд╛рдВ рджрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ - рд▓реЗрдХрд┐рди рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, PowerShell рдХреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ред ЁЯЩВ

рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ .NET рдХреЛрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд░рди рдХрд░рддреЗ рд╕рдордп рдореЛрдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореИрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рддрд╛ рд╣реВрдВред рджреЗрдЦ
Dllmap рдбрд┐рдЬрд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ https://github.com/dotnet/coreclr/blob/c3e1bd5ccc482c9a7670762676bda95ebd34707d/Documentation/design-docs/dllmap.md
рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг
https://github.com/dotnet/coreclr/blob/6a48f05c77e80b604d71a9b84cc6b014306e849e/Documentation/design-docs/dllmap.md#

рдЕрдкрдбреЗрдЯ: CurrentContextualReflectionContext
https://github.com/dotnet/designs/blob/master/accepted/runtime-binding.md#rollforward

@rkeithhill

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ recompile рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ netstandard2 рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реИред рд▓реЗрдХрд┐рди AFIICT DllImport рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо рдорд╛рди рдПрдХ рд╕реНрдерд┐рд░ рд╕рдордп рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред :-(

FWIW рдЖрдк DllImport рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкреАрдПрд╕рдИрдПрд╕ рдХреЗ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рджреЗрд╢реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рдЖрдзрд╛рд░ рдирд╛рдо рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рддреЛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рд╢рд╛рдпрдж рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ LoadLibrary / dlopen рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рднреА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рд╡рд┐рдзрд┐ JIT'd рдирд╣реАрдВ рд╣реИ рддрдм рддрдХ рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреБрдЫ рд░рд┐рд▓реАрдЬ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдЧреАред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред

https://docs.microsoft.com/en-us/dotnet/api/system.runtime.loader.assemblyloadcontext.loadunmanageddll?view=netcore-2.2#System_Runtime_Loader_AssemblyLoadContext_LoadUnmanagedDll_System_String_

@adityapatwardhan рдЬреЛ LoadLibrary / dlopen рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЖрд╡рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛!

@adityapatwardhan рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ LoadUnmanagedDll рдХреЗ рдЖрд╕рдкрд╛рд╕ рдорд┐рд▓рд╛ред рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреЗрдорддрд▓рдм рд╣реИред

рд╣рдореЗрдВ рдПрдХ рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкреЙрд▓рд┐рд╕реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдордиреЗ рдЕрд╕реЗрдВрдмрд▓реА BWadContext.LoadUnmanagedDll рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХрд┐рдпрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдб рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕реЗрдВрдмрд▓реАрд▓реЙрдб рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ.рд▓реЙрдб рдпреВрдордирдбреЗрдбрдбрд▓ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдордиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдб рд╕рдВрджрд░реНрдн рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рд╕рднреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ред

рд╕реНрд░реЛрдд: LoadUnmanagedDllFromPath / LoadUnmanagedDll рд▓рд╛рдЗрди рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрджрд┐ .so рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрде рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ NativeLibrary API рдкрд░ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдореЗрд░рд╛ рд▓рд┐рдВрдХ рд╣рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд╛рдзрд╛рди (.Net Core 3.0 рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж) рджреЗрддрд╛ рд╣реИред

CurrentContextualReflectionContext https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/AssemblyLoadContext.ContextualReflection.md

рдпрд╣ рдкреНрд▓рдЧ-рдЗрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, # 6724, # 6426, рдФрд░ рдХреБрдЫ рдЕрдиреНрдпред
/ cc @ daxian-dbw

@adityapatwardhan рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рд╕реЗ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рд╣рдо рдЗрд╕ рдкрд░ рд╕рд╣реА рдбреЙрдХреНрдЯрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреНрдп рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рд╣реВрдВред рдореИрдВ рдЕрдЧрд▓реЗ рд╣рдлреНрддреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред

@adamdriscoll рдХреБрдЫ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рд╢рд╛рдпрдж UniversalDashboard рдФрд░ AvaloniaUI + PowerShell рдореЗрдВ рдХреБрдЫ рд░рдЪрдирд╛рддреНрдордХ рд╕рд╛рдорд╛рди рдХрд░рдирд╛ рдерд╛ред

FWIW рдХреЛрдб рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ dlopen pinvoke рдФрд░ рдореИрдХ рдкрд░ рд╕рд╛рдЭрд╛ lib рдХреЗ рдирд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ .NET Core 2.2 рдкрд░ рд╣реИред

рдпреВрдбреА @rkeithhill рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ MacOSX рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред https://github.com/ironmansoftware/universal-dashboard/blob/master/src/UniversalDashboard/Server/CustomAssemblyLoadContext.cs

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдкрде рдХреЗ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рднрд┐рдиреНрдирддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ kluge рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИред рдпрджрд┐ рдПрдХ рдирдпрд╛ рдмрд╛рдЗрдирд░реА рдкреНрд░рдХрд╛рд░ рдПрдХ рдирдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдкреЙрдк рдЕрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпреВрдбреА рдЕрд╕реЗрдВрдмрд▓реА рд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@rkeithhill рдХреНрдпрд╛ рдЖрдк рд╕рднреА WindowsLinux рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ? (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрд╡рд░рдг рдбреАрдПрд▓рдПрд▓ рдЕрд╕реЗрдВрдмрд▓реА рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рд▓рдХреНрд╖реНрдп рджреЗрд╢реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ?)

рдпреВрдбреА рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рдирдЯрд╛рдЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдбреЙрдЯрдиреЗрдЯ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд░реНрдЧ рд╕рднреА рдореВрд▓ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд╕рд╣реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ PS рдХреЗрд╡рд▓ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рджреЗрдЦ рд╕рдХреЗ рдФрд░ рд╕рд╣реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХреЗред рдбреЙрдЯрдиреЗрдЯ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╡рд╣рд╛рдБ рдХреБрдЫ рдХреЛрдб рд╣реИред

рдореИрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдкрд░рд┐рдгрд╛рдо RuntimeInformation.IsOSPlatform(OSPlatform.Windows) рдЖрдзрд╛рд░ рдкрд░ рдореВрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реИ, рддреЛ рдореИрдВ Windows рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ C # рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЕрдиреНрдпрдерд╛, рдореИрдВ Linux рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рд╕рднреА рджреЗрд╢реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ?)

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдмрд╛рд╕ (msvcrt, рдЖрджрд┐) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдорд╛рдирдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рд╢рд╛рдпрдж рд░рдирдЯрд╛рдЗрдо рдирд╛рдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд)? рдпрд╣ рд╣рдореЗрдВ рджреЗрд╢реА dll рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдпреВрдбреА рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рдирдЯрд╛рдЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд░рдЦрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдбреЙрдЯрдиреЗрдЯ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд░реНрдЧ рд╕рднреА рдореВрд▓ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд╕рд╣реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ, рддреЛ рдЖрдк PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд░рд╣реЗ рд╣реИрдВред рджреЗрд╢реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрдиреНрд╣реЗрдВ рд╣реВрдб рдХреЗ рдиреАрдЪреЗ рд▓реЛрдб рдХрд░реЗрдВ рдЬрдм рдЖрдк рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдмрд╛рдЗрдирд░реА рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ RID- рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреЗрд╢реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ?

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ PS рдХреЗрд╡рд▓ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рджреЗрдЦ рд╕рдХреЗ рдФрд░ рд╕рд╣реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХреЗред рдбреЙрдЯрдиреЗрдЯ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╡рд╣рд╛рдБ рдХреБрдЫ рдХреЛрдб рд╣реИред

рд╣рд╛рдБ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ .NET рд░рдирдЯрд╛рдЗрдо рдХреЗ рднреАрддрд░ рд╣реА рдХреБрдЫ RID рдЬрд╛рдЧрд░реВрдХрддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВ рдЙрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдЬрд░реВрд░рдд рдкрдбрд╝ рд╕рдХрддреА рд╣реИред

@joeyaiello

рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ, рддреЛ рдЖрдк PowerShell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд░рд╣реЗ рд╣реИрдВред рджреЗрд╢реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрдиреНрд╣реЗрдВ рд╣реВрдб рдХреЗ рдиреАрдЪреЗ рд▓реЛрдб рдХрд░реЗрдВ рдЬрдм рдЖрдк рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдмрд╛рдЗрдирд░реА рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ RID- рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреЗрд╢реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдВ, рдареАрдХ рдпрд╣реАред UD рдмрд╕ рд▓рдХреНрд╖реНрдп RID рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред

@ vexx32 рдореИрдВрдиреЗ

рд╡рд░реНрддрдорд╛рди рдореЗрдВ PSWordCloud рдХреА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдирд╣реАрдВред рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБ, рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдмрд┐рд╕реНрддрд░ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдБред Pester рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдмрд╕ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд▓реЗрдХрд┐рди I _think_ рдЬрдм рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдЕрдкрд╡рд╛рдж рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╡рд╣ рдЕрдкрд╡рд╛рдж рдЯрд╛рдЗрдк рдЗрдирд┐рд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ рд╕реНрдХреЗрдЯ рдбреАрдПрд▓рдПрд▓ рдХреЛ рдбреЙрдЯрдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреАрдВрдЪреЗ, рдпрд╛ рд░реЗрдкреЛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рд▓рдВрдмрд┐рдд рдирд╣реАрдВ рд╣реИ? :рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛:

рдпрджрд┐ рдЖрдк Skia dlls рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдиреЛрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдФрд░ рд╣рд╛рдБ рд╣рдо рдирдЧреЗрдЯ рд╕реЗ Skia рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рд╕реАрдзреЗ рдЯреЗрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдбреАрдПрд▓рдПрд╕ ~ рд╣рдорд╛рд░реЗ рдЯреЗрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ ~ рдПрдХ рдПрд╕реЗрд▓рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Nuget рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ RID рдирд╛рдорд┐рдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рджреЗрд╢реА dlls рд░рдЦрдирд╛ рд╣реИред рд╣рд╛рдБ?

рд╣рд╛рдВ, рдореИрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ! рдореИрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред :рд╢рд░рдорд╛рдирд╛:

рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ - рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг assert рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред

@rjmholt рдореИрдВрдиреЗ

рдореЗрд░реА WIP рд╢рд╛рдЦрд╛ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ https://github.com/vexx32/PSWordCloud/tree/FixPInvokes - рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП build.ps1 рдЪрд▓рд╛рдПрдБ рдФрд░ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рдЦреЗрдВред рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рднреА рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ред рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж New-WordCloud рдХреЙрд▓ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдореИрдХ рдУрдПрд╕ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

@ рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдореИрдВрдиреЗ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ? : /

GitHub
PowerShell рдХреЗ рд╕рд╛рде рд╕реБрдВрджрд░ рд╢рдмреНрдж рдмрд╛рджрд▓ рдмрдирд╛рдПрдВ! GitHub рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдХрд░ vexx32 / PSWordCloud рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░реЗрдВред

@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореВрд▓ рджреЗрдпрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ? ЁЯШХ

: рдЯрд╛рдбрд╛: рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ # 11032 рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЕрдм v7.0.0-rc.1 рд░реВрдк рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХрд╛рдо рд▓рд┐рдВрдХ:

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

manofspirit picture manofspirit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ/рдкрд╛рд╕рд┐рдВрдЧ: рдЧреИрд░-рдЙрджреНрдзреГрдд рдЯреЛрдХрди рдЬреЛ рдХреЛрд▓рди рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд╛рдЬрдХ рджреЛ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ $Args / @Args рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
mklement0 picture mklement0  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pcgeek86 picture pcgeek86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mklement0 picture mklement0  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

concentrateddon picture concentrateddon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ