<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Azure DevOps on ALCops</title><link>https://alcops.dev/docs/getting-started/cicd/azure-devops/</link><description>Recent content in Azure DevOps on ALCops</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://alcops.dev/docs/getting-started/cicd/azure-devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Task Reference</title><link>https://alcops.dev/docs/getting-started/cicd/azure-devops/extension-task/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alcops.dev/docs/getting-started/cicd/azure-devops/extension-task/</guid><description>&lt;h2 id="alcopsdownloadanalyzers1"&gt;ALCopsDownloadAnalyzers@1&lt;/h2&gt;
&lt;p&gt;Download ALCops analyzer DLLs with automatic target framework detection.&lt;/p&gt;
&lt;h3 id="inputs"&gt;Inputs&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Input&lt;/th&gt;
 &lt;th&gt;Required&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;detectUsing&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Input for TFM auto-detection. Accepts a BC artifact URL, a local compiler path, a channel (&lt;code&gt;latest&lt;/code&gt;, &lt;code&gt;preview&lt;/code&gt;, &lt;code&gt;current&lt;/code&gt;), or a specific version number.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;detectFrom&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;td&gt;&lt;em&gt;(auto)&lt;/em&gt;&lt;/td&gt;
 &lt;td&gt;Force the detection source: &lt;code&gt;bc-artifact&lt;/code&gt;, &lt;code&gt;marketplace&lt;/code&gt;, &lt;code&gt;nuget-devtools&lt;/code&gt;, or &lt;code&gt;compiler-path&lt;/code&gt;. When omitted, the task infers the source from the format of &lt;code&gt;detectUsing&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tfm&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Explicit target framework: &lt;code&gt;netstandard2.1&lt;/code&gt;, &lt;code&gt;net8.0&lt;/code&gt;, or &lt;code&gt;net10.0&lt;/code&gt;. Skips detection entirely.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;latest&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ALCops package version to download: &lt;code&gt;latest&lt;/code&gt;, &lt;code&gt;preview&lt;/code&gt;, or a pinned version (e.g., &lt;code&gt;1.2.3&lt;/code&gt;).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;outputPath&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$(Build.SourcesDirectory)/.alcops&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Directory where analyzer DLLs are extracted.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="output-variables"&gt;Output variables&lt;/h3&gt;
&lt;p&gt;Reference these using the task&amp;rsquo;s &lt;code&gt;name&lt;/code&gt; attribute (e.g., &lt;code&gt;$(ALCopsDownload.version)&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Examples</title><link>https://alcops.dev/docs/getting-started/cicd/azure-devops/examples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alcops.dev/docs/getting-started/cicd/azure-devops/examples/</guid><description>&lt;p&gt;Each example shows the ALCops-relevant steps. Full working pipelines are available in the &lt;a href="https://dev.azure.com/Arthurvdv/ALCops"&gt;demo repository&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;All examples use the same pattern:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Download analyzers&lt;/strong&gt; with &lt;code&gt;ALCopsDownloadAnalyzers@1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pass DLLs to the compiler&lt;/strong&gt; via &lt;code&gt;/analyzer&lt;/code&gt; flags or your build tool&amp;rsquo;s analyzer parameter&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="nuget-devtools-dotnet-al"&gt;NuGet DevTools (&lt;code&gt;dotnet al&lt;/code&gt;)&lt;/h2&gt;
&lt;p&gt;Cross-platform. Uses the BC Development Tools from NuGet for compilation. No Docker, no BC artifacts required for the compiler itself.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;task&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ALCopsDownloadAnalyzers@1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ALCopsDownload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;displayName&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ALCops - Download Analyzers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;inputs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;detectUsing&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;detectFrom&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;nuget-devtools&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;pwsh&lt;/span&gt;: |&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; $alcopsPath = &amp;#34;$(ALCopsDownload.outputDir)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; dotnet al compile `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/project:$(Build.SourcesDirectory)&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.ApplicationCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.DocumentationCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.FormattingCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.LinterCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.PlatformCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.TestAutomationCop.dll&amp;#34; `
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;/analyzer:$alcopsPath/ALCops.Common.dll&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://dev.azure.com/Arthurvdv/ALCops/_git/ALCops?path=/.devops/NuGetDevTools.yml"&gt;Full pipeline&lt;/a&gt;
&lt;/p&gt;</description></item></channel></rss>