小编Dim*_*dis的帖子

将 .net Framework 项目与 .net Core 项目(和语言)混合 - System.IO.FileNotFoundException

我有一个解决方案,其中大多数项目都是 VB.net 项目,所有项目都针对 .NET Framework 4.8。所有这些特定项目都可以正确编译并在生产中运行。

我添加了一个针对 .net standard 2.0 的 C# 项目。这个特定项目的主要原因是创建一个可以处理 razor 模板的组件(当然给定一个模型),以便使用 RazorLight_wik8wz nuget 包创建输出文件(我并不关心我使用哪个包,只要我可以在内存中渲染剃刀模板,因为模型/模板对生成的输出可能在不同情况下保留在不同位置)。

理论上,根据我的理解,我应该能够从其他 .net Framework 4.8 项目中引用和使用 .net standard 2.0 库项目。然而,我似乎无法让它工作(即使一切都编译并运行)。

我已经尝试了几种基于 RazorLight 的不同软件包,但当我尝试使用它们时,我得到了类似的结果。我只是不确定我是否遇到了错误或者我是否没有正确执行某些操作。

C# 项目名为“JobOutputGenerator”。我添加了名为“RazorLight_wik8wz”的 nuget 包,并创建了一个名为 JobOutput 的对象,当前如下所示:

using System.Threading.Tasks;
using RazorLight;

public class JobOutput
{
    public static async Task<byte[]> CreateOutputAsync(string RazorTemplate, object Model)
    {
        RazorLightEngine engine = new RazorLightEngineBuilder().UseMemoryCachingProvider().Build();
        return System.Text.Encoding.ASCII.GetBytes(await engine.CompileRenderAsync(RazorTemplate.GetHashCode().ToString() + Model.GetHashCode().ToString(), RazorTemplate, Model));
    }

}
Run Code Online (Sandbox Code Playgroud)

我创建了另一个名为“TesterApp”的项目,它是一个面向 .NET Framework 4.8 的 VB.NET 项目。这是一个引用 JobOutputGenerator 的简单 Windows 窗体项目。

我有一个按钮可以执行以下操作:

Private …
Run Code Online (Sandbox Code Playgroud)

c# vb.net .net-standard-2.0 .net-4.7.1 .net-core-2.2

5
推荐指数
1
解决办法
3481
查看次数

使用 PowerShell,是否可以在没有类型库或 COM 互操作 DLL 的情况下调用 IUpdateInstaller4.Commit?

这个问题本质上是一个 6 年多前的问题的后续问题:\n IUpdateInstaller4::Commit not found

\n

正如 Hans Passant 在该答案中所述,当时,不仅类型库完全缺少此接口,而且其他接口(如 IUpdateInstaller3)也完全缺少。

\n

快进到现在,Windows 10 20H2 及更高版本实际上有一个 wuapi.dll,其中包含 wuapi.dll 内的完整类型库,并且 MSDN 文档已更新。

\n

以下是 IUpdateInstaller4 接口(以及之前缺失的其余接口)的链接:\n https://learn.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdateinstaller4

\n

也就是说,在旧版本的 Windows 10 上,如果要安装功能更新,则必须调用 IUpdateInstaller4.Commit 才能正确安装功能更新。我的观察是,如果您不这样做,您的 Windows 安装可能会回滚或使您的系统处于几乎无法使用的状态(问我是怎么知道的)。

\n

我正在寻找一种使用本机 powershell 的方法,以便能够在旧版本的 Windows 10(例如 Windows 10 1909)上调用 Commit 方法。到目前为止,我唯一成功的是在较新版本的 Windows 10 上创建 COM 互操作 DLL Windows 10(例如 21H2)并将 COM 互操作 DLL 带回 1909 计算机并利用它 -但我正在寻找一种方法来执行此操作,而无需将整个 DLL 发送到计算机。我怀疑有一种方法可以使用 Add-Type 和一些 C# 代码来完成此操作,这是我理想的解决方案,以便整个 Windows 更新过程可以由我编写的 Powershell 脚本来处理。

\n …

c# com powershell wuapi

5
推荐指数
1
解决办法
369
查看次数