I want to publish my self contained .NET Core (2.2) application, however one specific NuGet package (Microsoft.Management.Infrastructure
) is never published to the publish
folder (as in the .dll file is not present).
I'm using the command dotnet publish -c Release --self-contained -r win-x64 ConsoleApp1
. When running the application inside visual studio, everything works. However when running the compiled executable, I get a FileNotFoundException
:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified. at ConsoleApp1.Program.Main(String[] args)
1) Create a simple .NET Core console app (I tested both 2.1 and 2.2, no difference)
2) Add the NuGet package Microsoft.Management.Infrastructure
3) Add the following code to the application:
namespace ConsoleApp1
{
internal class Program
{
private static void Main(string[] args)
{
var sessionOptions = new DComSessionOptions
{
Timeout = TimeSpan.FromSeconds(30)
};
CimSession Session = CimSession.Create("localhost", sessionOptions);
var processors = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Processor");
foreach (CimInstance processor in processors)
{
Console.WriteLine(processor.CimInstanceProperties["Name"].Value);
}
Console.ReadLine();
}
}
}
4) Publish the project: dotnet publish -c Release --self-contained -r win-x64 ConsoleApp1
5) Run the compiled executable
To make publish output go to separate folders for each project, specify a relative path by using the msbuild PublishDir property instead of the --output option. For example, dotnet publish -p:PublishDir=. \publish sends publish output for each project to a publish folder under the folder that contains the project file.
Open your web project in Visual Studio (using the WebSite. sln or WebApp. sln file). Right-click the Kentico project in the Solution Explorer and select Publish Web Site (web site projects) or Publish (web applications).
Build compiles the source code into a (hopefully) runnable application. Publish takes the results of the build, along with any needed third-party libraries and puts it somewhere for other people to run it.
The MMI package is composed of multiple assemblies which are specific to the Windows version i.e.: win10-x64
, win10-x86
win8-x64
etc.
Thereby, you must use a version-specific target runtime (for example: win10-x64
) instead of the generic win-x64
. Using the publish command from below, the MMI DLL is included in the publishing procedure.
dotnet publish -c Release --self-contained -r win10-x64 ConsoleApp1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With