This year’s Microsoft Build is packed with news ta
情報源: The Windows Developer’s Guide to Microsoft Build 2021 – Windows Developer Blog
Memo.
This year’s Microsoft Build is packed with news ta
情報源: The Windows Developer’s Guide to Microsoft Build 2021 – Windows Developer Blog
Memo.
プログラミングを学び始め、分岐・繰り返しといった基本文法を身に付けたら、次のステップとしては「読みやすいコード」を書く技術をつけたいです。この記事では、そういったコーディングの原則を学ぶための書籍を紹介します。
情報源: コーディングの原則を学ぶための書籍まとめ – 完全に理解した.com
紹介されている本はプリンシプルオブプログラミングと達人プログラマー第2版(初版は読んだ)は読んでいませんけど、良いのではないですかね。達人プログラマー第2版読んでおかないと。。。
Our team is eager to release Visual Studio 2019 v16.9 and v16.10 Preview 1. These include new features from our C++, .NET Productivity, XAML tooling, Address Sanitizer, and IntelliCode teams.
情報源: Visual Studio 2019 v16.9 and v16.10 Preview 1 are Available Today! | Visual Studio Blog
出ました。
Introduction Win32 APIs provide powerful functionality that let you get the most out of Windows in your applications. While these APIs are readily accessible to C and C++ developers, other languages like C# and Rust require wrappers or bindings in order to access these APIs.
情報源: Making Win32 APIs More Accessible to More Languages
Memo.
Download, install, and configure Language Accessory Packs for Office.
情報源: Office の言語アクセサリ パック – Office サポート
上リンクからダウンロードが可能。
Memo.
情報源: MSIインストーラーで詳細ログを出力する – Qiita
msiを使ったインストール時にError 1001がダイアログやメッセージボックスとして発生したときに、以下の要領でログを出力させることで、より詳細なエラー原因がわかる場合がある。
> msiexec /i myinstaller.msi /l*v c:\installer.log
詳しいオプションは以下。
https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options
情報源: ソースコードブランチ管理のパターン
マーティンファウラーによるブランチ管理の分類。細かい。
Introduction to building gRPC services in ASP.NET Core 3.0 for WCF developers
情報源: ASP.NET Core gRPC for WCF Developers – gRPC for WCF Developers | Microsoft Docs
Microsoftの作ったブックレット。WCF、自システム内だったら政治的にgRPCへの移行も簡単なんだろうけど、実際にはSOAP/WS-ベースの他システム連携の場所で多く使われているので、実際のところ、gRPCへの移行より今必要なのは、WCFを使用しないSOAP/WS-実装指南の方が現実的だと思う。日本だけの話じゃないよ。
using System; using System.Collections.Generic; using System.Text; using System.IO; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; namespace RoslynComple { class Program { private static readonly IEnumerable<string> DefaultNamepaces = new[] { "System", "System.IO", "System.Net", "System.Linq", "System.Text", "System.Text.RegularExpressions", "System.Collections.Generic" }; private static string runtimePath = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\{0}.dll"; private static readonly IEnumerable<MetadataReference> DefaultRefrences = new[] { MetadataReference.CreateFromFile(string.Format(runtimePath, "mscorlib")), MetadataReference.CreateFromFile(string.Format(runtimePath, "System")), MetadataReference.CreateFromFile(string.Format(runtimePath, "System.Core")) }; private static readonly CSharpCompilationOptions DefaultCompletionOpsions = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) .WithOverflowChecks(true).WithOptimizationLevel(OptimizationLevel.Release) .WithUsings(DefaultNamepaces); public static SyntaxTree Parse(string text, string filename = "", CSharpParseOptions options = null) { var stringText = SourceText.From(text, Encoding.UTF8); return SyntaxFactory.ParseSyntaxTree(stringText, options, filename); } static void Main(string[] args) { // DLL Source Code var fileToCompile = @"C:\temp\Test.cs"; var source = File.ReadAllText(fileToCompile); var parseSyntaxTree = Parse(source, "", CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp7_3)); var compliation = CSharpCompilation.Create("test.dll", new SyntaxTree[] { parseSyntaxTree }, DefaultRefrences, DefaultCompletionOpsions); try { var result = compliation.Emit(@"c:\temp\Test.dll"); Console.WriteLine(result.Success ? "Sucess!!" : "Failed"); } catch (Exception ex) { Console.WriteLine(ex); throw; } Console.Read(); } } }
nugetでMicrosoft.CodeAnalysis.CSharpの追加が必要。(その他依存関係にあるパッケージも。)