{"version":1,"pages":[{"id":"buLdF8D1BSmfqdsmZaoA","title":"Today I Learned","pathname":"/","siteSpaceId":"sitesp_gbiQa","description":"This is the site where I share little snippets and tidbits of learnings that don't deserve a full blog post on https://cazzulino.com, grouped by areas, rather than by date."},{"id":"Jqj5NxakwvldCnx1fpJy","title":"How to get messages logged in dotnet build output","pathname":"/dotnet/how-to-get-messages-logged-in-dotnet-build-output","siteSpaceId":"sitesp_gbiQa","description":"<Message Importance=\"high\" Text=\"Gone?!\" /> gone?","breadcrumbs":[{"label":"dotnet"}]},{"id":"PrahrgFmXcHkKNL20Hkx","title":"How to emit descriptions for exported JSON schema using JsonSchemaExporter","pathname":"/dotnet/how-to-emit-descriptions-for-exported-json-schema-using-jsonschemaexporter","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MQrovBjfeP6YODkX51P","title":"NuGet","pathname":"/dotnet/nuget","siteSpaceId":"sitesp_gbiQa","description":"NuGet-related learnings","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MX3J_A82xUb-BhLhele","title":"Suppress dependencies when packing","pathname":"/dotnet/nuget/suppress-dependencies-when-packing","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"},{"label":"NuGet"}]},{"id":"-MJ5Ygo2G_eG4QVj-G1i","title":"Hide contentFiles from your nuget packages","pathname":"/dotnet/nuget/hide-contentfiles-from-your-nuget-packages","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"},{"label":"NuGet"}]},{"id":"-MHi2DjY7Ay_CuZ8yfsd","title":"Packaging transitive analyzers with NuGet","pathname":"/dotnet/nuget/packaging-transitive-analyzers-with-nuget","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"},{"label":"NuGet"}]},{"id":"-MP616sZBs8Y1-xmSs67","title":"How to add search to static nuget feed","pathname":"/dotnet/nuget/use-dotnet-vs-to-get-developer-prompt-in-terminal","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"},{"label":"NuGet"}]},{"id":"-MOlT03U5qjHjYiO34vF","title":"Populate RepositoryBranch in CI for NuGet Pack","pathname":"/dotnet/nuget/populate-repositorybranch-in-ci-for-nuget-pack","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"},{"label":"NuGet"}]},{"id":"S919zUhhMiiyQPxdahmr","title":"Ignore folder from dotnet-format","pathname":"/dotnet/ignore-folder-from-dotnet-format","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MaC63UmZmt4KBkVxXh7","title":"Accessing Tor .onion URLs via HttpClient with .NET6","pathname":"/dotnet/accessing-tor-via-httpclient-with-.net6","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-M_zdQ3Qe2wVE79yOqSF","title":"Installing .NET 5.0 on Raspberry Pi 4","pathname":"/dotnet/installing-.net-5.0-on-raspberry-pi-4","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MOlc6PoxPSkLXedxpRI","title":"Quickly check C# compiler and language version","pathname":"/dotnet/quickly-check-c-compiler-and-language-version","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MOe1uZIh2TtO5fvan0H","title":"Disable diagnostic analyzers for entire folder/submodules","pathname":"/dotnet/disable-diagnostic-analyzers-for-entire-folder-submodules","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MOJEEGfHmQCVwL0ARr5","title":"Persisting output files from source generators","pathname":"/dotnet/persisting-output-files-from-source-generators","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MHX8jwpePnuo0qkAK4g","title":"Use C# 9 records in non-net5.0 projects","pathname":"/dotnet/use-c-9-records-in-non-net5.0-projects","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"dotnet"}]},{"id":"-MChFhwqQDWGchHBaEaY","title":"AsyncLocal never leaks and is safe for CallContext-like state","pathname":"/dotnet/asynclocal-never-leaks-and-is-safe-for-callcontext-like-state","siteSpaceId":"sitesp_gbiQa","description":"Even if it's typically used in a static field, the values never leak since they are bound to a transient ExecutionContext","breadcrumbs":[{"label":"dotnet"}]},{"id":"-M7dJjWpDuK4MOR-5o1W","title":"Using HashCode in .NETFramework","pathname":"/dotnet/using-hashcode-in-.netframework","siteSpaceId":"sitesp_gbiQa","description":"How to use HashCode type in full .NET, which doesn't support it","breadcrumbs":[{"label":"dotnet"}]},{"id":"-M5WAa6A77In1pdRVLQA","title":"How to locate dotnet","pathname":"/dotnet/how-to-locate-dotnet","siteSpaceId":"sitesp_gbiQa","description":"How to locate dotnet from the currently running .NET Core application","breadcrumbs":[{"label":"dotnet"}]},{"id":"-M5eMcY4-pc7iLmqb_-4","title":"Conditional unit tests","pathname":"/testing/conditional-unit-tests","siteSpaceId":"sitesp_gbiQa","description":"How to run xunit tests conditionally depending on the environment that is running the tests","breadcrumbs":[{"label":"testing"}]},{"id":"-M6TU0lRK9qROXmL2HXU","title":"Skip tagged scenarios in SpecFlow with Xunit","pathname":"/testing/skip-tagged-scenarios-in-specflow-with-xunit","siteSpaceId":"sitesp_gbiQa","description":"How to skip scenarios with a certain tag from executing","breadcrumbs":[{"label":"testing"}]},{"id":"VY7pBF74g5tSjEpFU4iF","title":"How to get user home dir ~ cross-platform","pathname":"/msbuild/how-to-get-user-home-dir-cross-platform","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MK90X2SXpGwMUozu6ZV","title":"Modifying the build for every solution in a repository","pathname":"/msbuild/modifying-the-build-for-every-solution-in-a-repository","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MK6_wZWGlHIcGTa035f","title":"Detect CI builds for every CI system","pathname":"/msbuild/detect-ci-builds-for-every-ci-system","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MJZyz4CbVy1SGjaTkws","title":"Modify all command-line builds in entire repo","pathname":"/msbuild/modify-all-command-line-builds-in-entire-repo","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MJ0Rf6M2f_9vrrbF6Bv","title":"Write entire XML fragments in MSBuild with XmlPoke","pathname":"/msbuild/write-entire-xml-fragments-in-msbuild-with-xmlpoke","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MIUUM45XpoFwVVObkuT","title":"How to select first item in an ItemGroup","pathname":"/msbuild/how-to-select-first-item-in-an-itemgroup","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MHKAaApp6QFbC41PENp","title":"How to include commit URL in nuget package description","pathname":"/msbuild/how-to-include-commit-url-in-nuget-package-description","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-MHK1rAo4wRK3X-lrEa4","title":"How to include package reference files in your nuget","pathname":"/msbuild/how-to-include-package-reference-files-in-your-nuget-package","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-M6Y740gNnCjAughweSV","title":"How to build project when content files change","pathname":"/msbuild/how-to-build-project-when-content-files-change","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"msbuild"}]},{"id":"-Mb55sdjuAhtZEbGQ_5U","title":"How to launch multiple Azure Functions apps on different ports","pathname":"/azure/how-to-launch-multiple-azure-functions-apps-on-different-ports","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"azure"}]},{"id":"-MGz84jETETV_qMy-OAk","title":"C# script function apps beyond Azure portal","pathname":"/azure/c-script-function-apps-beyond-azure-portal","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"azure"}]},{"id":"-MGz42edkgEVcengBz3T","title":"Publishing function app from GitHub folder","pathname":"/azure/publishing-function-app-from-github-folder","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"azure"}]},{"id":"-MDx6VKa0bPVpGGU92GH","title":"Exploring Azure Data with Kusto and Dashboards","pathname":"/azure/exploring-azure-data-with-kusto-and-dashboards","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"azure"}]},{"id":"-MBcCGZfL7xwuTSbomcx","title":"Shared secret authorization with Azure SignalR Service","pathname":"/azure/shared-secret-authorization-with-azure-signalr-service","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"azure"}]},{"id":"-M9npjPMxTX1bbqLgRFD","title":"Using Azure File Copy from DevOps yaml pipeline","pathname":"/azure/using-azure-file-copy-from-devops-yaml-pipeline","siteSpaceId":"sitesp_gbiQa","description":"I learned that it's not enough to authorize Azure Resource Manager access from DevOps","breadcrumbs":[{"label":"azure"}]},{"id":"-M9QLaxm5CQTwnzVrbtJ","title":"Code-less redirection with serverless Azure Functions","pathname":"/azure/code-less-redirection-with-serverless-azure-functions","siteSpaceId":"sitesp_gbiQa","description":"How to quickly and simply configure redirections without writing code in Azure Functions","breadcrumbs":[{"label":"azure"}]},{"id":"-M_MhT3B0hAxaW4RUa9J","title":"How to run Azure Storage unit tests in CI","pathname":"/devops-ci-cd/how-to-run-azure-storage-unit-tests-in-ci","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"DevOps/CI/CD"}]},{"id":"-MLuGidDMgMskIjoXtoE","title":"How to skip steps or jobs in GitHub Actions for PRs from forks","pathname":"/devops-ci-cd/how-to-skip-steps-or-jobs-in-github-actions-for-prs-from-forks","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"DevOps/CI/CD"}]},{"id":"-MGoasfHSivkn3oHuJKt","title":"Update version and publish npm from GH","pathname":"/devops-ci-cd/update-version-and-publish-npm-from-gh","siteSpaceId":"sitesp_gbiQa","description":"Setting up CI with GitHub Actions to update a node.js package version from GitHub release tag and publish it to npm","breadcrumbs":[{"label":"DevOps/CI/CD"}]},{"id":"-MSFlI29LJgZmR05ess2","title":"Push to protected branch from GitHub actions","pathname":"/devops-ci-cd/push-to-protected-branch-from-github-actions","siteSpaceId":"sitesp_gbiQa","description":"","breadcrumbs":[{"label":"DevOps/CI/CD"}]}]}