vs2019离线安装包制作

vs2009脱机安装 执行layout.cmd,需要网络,如果已经下载localVSlayout,可以跳过这一步 执行cert.cmd,不需要网络. 执行setup.cmd,不需要网络. 脱机安装指引>https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio?view=vs-2019 可以参考1,3步命令下载安装其他组件 工作负载和组件id官网地址>https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-professional?view=vs-2019 命令含义: vs_Professional.exe:前一步下载的 Visual Studio 引导程序 –layout:指定 VS2019 相关组件的下载目录,设置为当前目录下的 vs2019_layout 目录。 –add:添加将要下载的工作负载,添加的是 NativeDesktop、ManagedDesktop –includeRecommended:安装相关工作负载的推荐组件(另一个参数 –includeOptional 将会下载选定的工作负载中可选的组件,会导致下载的安装包过大,不建议使用。) –lang:下载指定的语言包,本人下载了英文(en-US)、中文(zh-CN) %layout.cmd% vs_Professional.exe --layout d:\vs2019\localVSlayout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeRecommended --lang en-US pause %cert.cmd% certutil.exe -addstore -f "Root" "D:\vs2019\localVSlayout\certificates\manifestRootCertificate.cer" certutil.exe -addstore -f "Root" "D:\vs2019\localVSlayout\certificates\manifestCounterSignRootCertificate.cer" certutil.exe -addstore -f "Root" "D:\vs2019\localVSlayout\certificates\vs_installer_opc.RootCertificate.cer" pause %setup.cmd% cd localVSlayout vs_Professional.exe --noweb --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeRecommended pause

2025年7月24日 · 1 分钟 · 67 字

Roslyn

Roslyn 是以 API 为驱动的下一代编译器,集成在最新版的 Visual Studio 上。它开放 C# 和 Visual Basic 编译器的 API,使得开发者可以借助编译器进行解析代码文件、动态为编程语言增加功能、扩展编译器、自定义编译器动作等操作。 将Roslyn编译结果保存在流中,用程序集加载方法将流加载到当前程序集中,就可以在当前的程序集中调用了。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; namespace RoslynDemo { class Program { static void Main(string[] args) { // 加载C#程序集 var assembly = Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); var compilation = CSharpCompilation.Create("HelloWorld") .AddReferences(assembly) .AddSyntaxTrees(SyntaxFactory.ParseSyntaxTree("using System; class Program { static void Main() { Console.WriteLine(\"Hello, World!\"); } }")); // 生成程序集和语法树 var assembly = compilation.Emit("HelloWorld.dll"); var syntaxTree = compilation.SyntaxTrees.Single(); // 解析语法树并提取方法信息 var root = syntaxTree.GetRoot(); var methods = root.DescendantNodes().OfType<MethodDeclarationSyntax>(); foreach (var method in methods) { Console.WriteLine("方法名称:{0}", method.Identifier); Console.WriteLine("方法返回类型:{0}", method.Type); Console.WriteLine("方法体:"); Console.WriteLine(method.Body); Console.WriteLine(); } } } }

2025年7月22日 · 1 分钟 · 105 字