Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez az útmutató az SQL Server kódelemzési szabályának létrehozásához használt lépéseket mutatja be. Az ebben az útmutatóban létrehozott szabály a tárolt eljárások, triggerek és függvények WAITFOR DELAY utasítások elkerülésére szolgál.
Ebben az útmutatóban egy egyéni szabályt hoz létre Transact-SQL statikus kódelemzéshez az alábbi lépések végrehajtásával:
- Hozzon létre egy osztálytárprojektet, engedélyezze az aláírást a projekthez, és adja hozzá a szükséges hivatkozásokat.
- Hozzon létre két segéd C#-osztályt.
- Hozzon létre egy C# egyéni szabályosztályt.
- Hozza létre az osztálytárprojektet.
- Telepítse és tesztelje az új kódelemzési szabályt.
A Visual Studio (SQL Server Data Tools) utasításain kívül az útmutató az SDK-stílusú SQL-projektekre összpontosít.
Prerequisites
Az útmutató elvégzéséhez a következő összetevőkre van szüksége:
- Telepítve van a Visual Studio egy verziója, amely tartalmazza az SQL Server Data Toolst, és támogatja a C# .NET-keretrendszer fejlesztését.
- SQL Server-objektumokat tartalmazó SQL Server-projekt.
- Az SQL Server egy példánya, amelyen adatbázisprojektet helyezhet üzembe.
Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL Server Data Tools SQL Server-funkcióit. Ismernie kell a Visual Studio fogalmait, például az osztálytárak létrehozását, a NuGet-csomagok hozzáadását, valamint azt, hogy a kódszerkesztővel hogyan adhat hozzá kódot egy osztályhoz.
Note
Az SDK-stílusú SQL Server Data Tools előzetes verziójának korlátozásai miatt az útmutató elvégzéséhez több Visual Studio-telepítésre van szükség. Az osztálytárprojekt létrehozásához az első telepítésre, a második telepítésre az SDK-stílusú SQL Database-projekt létrehozásához van szükség.
- .NET 8 SDK
- Visual Studio 2022 Közösségi, Profi vagy Vállalati
- SQL Server Data Tools, SDK-stílusú (előzetes verzió)
- Telepítve van a Visual Studio egy verziója, amely támogatja a C# .NET-fejlesztést.
- SQL Server-objektumokat tartalmazó SQL Server-projekt.
Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL Server Data Tools SQL Server-funkcióit. Ismernie kell a Visual Studio fogalmait, például az osztálytárak létrehozását, a NuGet-csomagok hozzáadását, valamint azt, hogy a kódszerkesztővel hogyan adhat hozzá kódot egy osztályhoz.
- Telepítve van a Visual Studio Code egy verziója, amely tartalmazza az SQL Database Projects bővítményt.
- SQL-objektumokat tartalmazó SQL-adatbázisprojekt.
- .NET 8 SDK
- Ajánlott: VS Code-hoz készült C# Dev Kit-bővítmény
Ez az útmutató olyan felhasználók számára készült, akik már ismerik a Visual Studio Code SQL Database Projects bővítményét. Ismernie kell a fejlesztési fogalmakat, például az osztálytár létrehozását, a csomagok hozzáadását és a kódszerkesztő használatát a kód szerkesztéséhez.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson egy másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozásához alkalmazáskód-szerkesztő használatával.
- Szövegszerkesztő, például a Visual Studio Code fájlszerkesztője.
- SQL-objektumokat tartalmazó SQL-adatbázisprojekt.
- .NET 8 SDK
Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL-projekteket. Ismernie kell a fejlesztési fogalmakat, például az osztálytár létrehozását, a csomagok hozzáadását és a kódszerkesztő használatát a kód szerkesztéséhez.
1. lépés: Osztálytárprojekt létrehozása
Először hozzon létre egy osztálytárat. Osztálytárprojekt létrehozása:
Hozzon létre egy C# (.NET Framework) osztálytárprojektet
SampleRules.Nevezze át a fájlt
Class1.csAvoidWaitForDelayRule.cs.A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza hozzáadása, majd Hivatkozáslehetőséget.
Válassza a
System.ComponentModel.Compositiona Szerelvények\Keretrendszerek lapon.A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza a NuGet-csomagok kezeléselehetőséget. Keresse meg és telepítse a
Microsoft.SqlServer.DacFxNuGet-csomagot. A kiválasztott verziónak162.x.x(például162.2.111) kell lennie a Visual Studio 2022-vel.
Ezután adja hozzá a szabály által használt támogató osztályokat.
Először hozzon létre egy osztálytárat. Osztálytárprojekt létrehozása:
Hozzon létre egy C# (.NET Framework) osztálytárprojektet
SampleRules.Nevezze át a fájlt
Class1.csAvoidWaitForDelayRule.cs.A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza hozzáadása, majd Hivatkozáslehetőséget.
Válassza a
System.ComponentModel.Compositiona Szerelvények\Keretrendszerek lapon.A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza a NuGet-csomagok kezeléselehetőséget. Keresse meg és telepítse a
Microsoft.SqlServer.DacFxNuGet-csomagot. A kiválasztott verziónak162.x.x(például162.2.111) kell lennie a Visual Studio 2022-vel.
Ezután adja hozzá a szabály által használt támogató osztályokat.
Indítsa el a Visual Studio Code-ot, és nyissa meg azt a mappát, ahol létre szeretné hozni a projektet.
Nyisson meg egy Terminál ablakot a Visual Studio Code-ban a Nézet menü kiválasztásával, majd Terminál.
A termináladja meg a következő parancsokat egy új megoldás és projekt létrehozásához:
dotnet new sln dotnet new classlib -n SampleRules -o SampleRules dotnet sln add SampleRules/SampleRules.csprojVáltás a
SampleRuleskönyvtárra:cd SampleRulesAdja hozzá a szükséges NuGet-csomagot:
dotnet add package Microsoft.SqlServer.DacFx
Ezután adja hozzá a szabály által használt támogató osztályokat.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik kimutatásra az osztálytárprojekt és az egyéni szabályosztályok alkalmazáskód-szerkesztővel való létrehozásáról.
Nyisson meg egy parancssort vagy egy terminálablakot, és lépjen arra a mappára, ahol létre szeretné hozni a projektet.
A termináladja meg a következő parancsokat egy új megoldás és projekt létrehozásához:
dotnet new sln dotnet new classlib -n SampleRules -o SampleRules dotnet sln add SampleRules/SampleRules.csprojVáltás a
SampleRuleskönyvtárra:cd SampleRulesAdja hozzá a szükséges NuGet-csomagot:
dotnet add package Microsoft.SqlServer.DacFx
2. lépés: Egyéni szabálysegítő osztályok létrehozása
Mielőtt létrehozza magának a szabálynak az osztályát, adjon hozzá egy látogatóosztályt és egy attribútumosztályt a projekthez. Ezek az osztályok hasznosak lehetnek további egyéni szabályok létrehozásához.
2.1. lépés: A WaitForDelayVisitor osztály definiálása
A definiálni kívánt első osztály a WaitForDelayVisitor osztály, amely TSqlConcreteFragmentVisitorszármazik. Ez az osztály hozzáférést biztosít a modell WAITFOR DELAY utasításaihoz. A látogatóosztályok az SQL Server által biztosított ScriptDom API-kat használják. Ebben az API-ban Transact-SQL kód absztrakt szintaxisfaként (AST) jelenik meg, és a látogatói osztályok akkor lehetnek hasznosak, ha konkrét szintaxisobjektumokat, például WAITFOR DELAY utasításokat szeretne keresni. Ezek az utasítások nehézkesek lehetnek az objektummodell használatával, mivel nincsenek hozzárendelve egy adott objektumtulajdonsághoz vagy kapcsolathoz, de a látogatói mintával és a ScriptDom API-val is megtalálhatja őket.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
WaitForDelayVisitor.cs, majd válassza a Hozzáadás gombot. AWaitForDelayVisitor.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
WaitForDelayVisitor.cs, majd válassza a Hozzáadás gombot. AWaitForDelayVisitor.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
Nyissa meg a Explorer nézetet a Visual Studio Code-ban.
Hozzon létre egy
WaitForDelayVisitor.csnevű új fájlt aSampleRulesmappában.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Válasszon másik nézetet az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozására vonatkozó utasításokért, az alkalmazáskód-szerkesztő használatával.
- Lépjen be a
SampleRuleskönyvtárba. - Hozzon létre egy
WaitForDelayVisitor.csnevű új fájlt.
Nyissa meg a
WaitForDelayVisitor.csfájlt, és frissítse a tartalmat a következő kódnak megfelelően:using System.Collections.Generic; using Microsoft.SqlServer.TransactSql.ScriptDom; namespace SampleRules { class WaitForDelayVisitor {} }Az osztálydeklarációban módosítsa a hozzáférés-módosító belsőre, és származtassa az osztályt
TSqlConcreteFragmentVisitor:internal class WaitForDelayVisitor : TSqlConcreteFragmentVisitor {}Adja hozzá a következő kódot a Listatag változó definiálásához:
public IList<WaitForStatement> WaitForDelayStatements { get; private set; }Definiálja az osztálykonstruktort a következő kód hozzáadásával:
public WaitForDelayVisitor() { WaitForDelayStatements = new List<WaitForStatement>(); }Felülbírálja a
ExplicitVisitmetódust a következő kód hozzáadásával:public override void ExplicitVisit(WaitForStatement node) { // We are only interested in WAITFOR DELAY occurrences if (node.WaitForOption == WaitForOption.Delay) WaitForDelayStatements.Add(node); }Ez a módszer felkeresi a modell
WAITFORutasításait, és olyan utasításokat ad hozzá, amelyeknél aDELAYbeállítás szerepel aWAITFOR DELAYutasítások listájában. A hivatkozott kulcsosztály a WaitForStatement .A Fájl menüben válassza a Mentés elemet.
2.2. lépés: Erőforrásfájl és három erőforrás-sztring hozzáadása
Ezután adjon hozzá egy erőforrásfájlt, amely meghatározza a szabály nevét, a szabály leírását és azt a kategóriát, amelyben a szabály megjelenik a szabály konfigurációs felületén.
A Megoldáskezelőválassza ki a
SampleRulesprojektet. A Project menüben válassza a Hozzáadás, majd az Új elemlehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel.A Telepített sablonoklistájában válassza Általánoslehetőséget. A részletek panelen válassza az Erőforrásfájllehetőséget.
Névmezőbe írja be a
RuleResources.resx. Megjelenik az erőforrás-szerkesztő, de nincsenek definiált erőforrások.Definiáljon négy erőforrás-sztringet az alábbiak szerint:
Name Value AvoidWaitForDelay_ProblemDescriptionWAITFOR DELAY statement was found in {0}.AvoidWaitForDelay_RuleNameAvoid using WaitFor Delay statements in stored procedures, functions and triggers.CategorySamplesSamplesCategoryCannotCreateResourceManagerCan't create ResourceManager for {0} from {1}.A Fájl menüben válassza a Save RuleResources.resxlehetőséget.
A Megoldáskezelőválassza ki a
SampleRulesprojektet. A Project menüben válassza a Hozzáadás, majd az Új elemlehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel.A Telepített sablonoklistájában válassza Általánoslehetőséget. A részletek panelen válassza az Erőforrásfájllehetőséget.
Névmezőbe írja be a
RuleResources.resx. Megjelenik az erőforrás-szerkesztő, de nincsenek definiált erőforrások.Definiáljon négy erőforrás-sztringet az alábbiak szerint:
Name Value AvoidWaitForDelay_ProblemDescriptionWAITFOR DELAY statement was found in {0}.AvoidWaitForDelay_RuleNameAvoid using WaitFor Delay statements in stored procedures, functions and triggers.CategorySamplesSamplesCategoryCannotCreateResourceManagerCan't create ResourceManager for {0} from {1}.A Fájl menüben válassza a Save RuleResources.resxlehetőséget.
A
SampleRuleskönyvtárban hozzon létre egyRuleResources.resxnevű új fájlt.Nyissa meg a
RuleResources.resxfájlt, és adja hozzá a következő kódot:<?xml version="1.0" encoding="utf-8"?> <root> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <data name="AvoidWaitForDelay_ProblemDescription" xml:space="preserve"> <value>WAITFOR DELAY statement was found in {0}</value> </data> <data name="AvoidWaitFormDelay_RuleName" xml:space="preserve"> <value>Avoid using WaitFor Delay statements in stored procedures, functions and triggers.</value> </data> <data name="CategorySamples" xml:space="preserve"> <value>SamplesCategory</value> </data> <data name="CannotCreateResourceManager" xml:space="preserve"> <value>Can't create ResourceManager for {0} from {1}</value> </data> </root>Mentse a
RuleResources.resxfájlt.Nyissa meg a
SampleRules.csprojfájlt, és adja hozzá a következő kódot a frissítéshez, és foglalja bele az erőforrás tartalmát a projektbe:<ItemGroup> <Compile Update="RuleResources.Designer.cs"> <DesignTime>True</DesignTime> <AutoGen>True</AutoGen> <DependentUpon>RuleResources.resx</DependentUpon> </Compile> </ItemGroup> <ItemGroup> <EmbeddedResource Include="RuleResources.resx"> <Generator>PublicResXFileCodeGenerator</Generator> <LastGenOutput>RuleResources.Designer.cs</LastGenOutput> </EmbeddedResource> </ItemGroup>Mentse a
SampleRules.csprojfájlt.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és a testreszabott szabályosztályok létrehozásához egy alkalmazáskód-szerkesztő használatával.
A
SampleRuleskönyvtárban hozzon létre egyRuleResources.resxnevű új fájlt.Nyissa meg a
RuleResources.resxfájlt, és adja hozzá a következő kódot:<?xml version="1.0" encoding="utf-8"?> <root> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <data name="AvoidWaitForDelay_ProblemDescription" xml:space="preserve"> <value>WAITFOR DELAY statement was found in {0}</value> </data> <data name="AvoidWaitFormDelay_RuleName" xml:space="preserve"> <value>Avoid using WaitFor Delay statements in stored procedures, functions and triggers.</value> </data> <data name="CategorySamples" xml:space="preserve"> <value>SamplesCategory</value> </data> <data name="CannotCreateResourceManager" xml:space="preserve"> <value>Can't create ResourceManager for {0} from {1}</value> </data> </root>Mentse a
RuleResources.resxfájlt.Nyissa meg a
SampleRules.csprojfájlt, és adja hozzá a következő kódot a frissítéshez, és foglalja bele az erőforrás tartalmát a projektbe:<ItemGroup> <Compile Update="RuleResources.Designer.cs"> <DesignTime>True</DesignTime> <AutoGen>True</AutoGen> <DependentUpon>RuleResources.resx</DependentUpon> </Compile> </ItemGroup> <ItemGroup> <EmbeddedResource Include="RuleResources.resx"> <Generator>PublicResXFileCodeGenerator</Generator> <LastGenOutput>RuleResources.Designer.cs</LastGenOutput> </EmbeddedResource> </ItemGroup>Mentse a
SampleRules.csprojfájlt.
2.3. lépés: A LocalizedExportCodeAnalysisRuleAttribute osztály definiálása
A második osztály a LocalizedExportCodeAnalysisRuleAttribute.cs. Ez a keretrendszer által biztosított beépített Microsoft.SqlServer.Dac.CodeAnalysis.ExportCodeAnalysisRuleAttribute kiterjesztése, és támogatja a szabály által használt DisplayName és Description egy erőforrásfájlból való olvasását. Ez egy hasznos osztály, ha valaha is szeretné használni a szabályokat több nyelven.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
LocalizedExportCodeAnalysisRuleAttribute.cs, majd válassza a Hozzáadás gombot. A fájl hozzá lesz adva a projekthez Megoldáskezelő.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
LocalizedExportCodeAnalysisRuleAttribute.cs, majd válassza a Hozzáadás gombot. A fájl hozzá lesz adva a projekthez Megoldáskezelő.
- Lépjen a
SampleRuleskönyvtárra a Visual Studio Code Explorer nézetében. - Hozzon létre egy
LocalizedExportCodeAnalysisRuleAttribute.csnevű új fájlt.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézőpontra az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozásához egy alkalmazáskód-szerkesztő használatával.
- Lépjen be a
SampleRuleskönyvtárba. - Hozzon létre egy
LocalizedExportCodeAnalysisRuleAttribute.csnevű új fájlt.
Nyissa meg a fájlt, és frissítse a tartalmat a következő kódnak megfelelően:
using Microsoft.SqlServer.Dac.CodeAnalysis; using System; using System.Globalization; using System.Reflection; using System.Resources; namespace SampleRules { internal class LocalizedExportCodeAnalysisRuleAttribute : ExportCodeAnalysisRuleAttribute { private readonly string _resourceBaseName; private readonly string _displayNameResourceId; private readonly string _descriptionResourceId; private ResourceManager _resourceManager; private string _displayName; private string _descriptionValue; /// <summary> /// Creates the attribute, with the specified rule ID, the fully qualified /// name of the resource file that will be used for looking up display name /// and description, and the Ids of those resources inside the resource file. /// </summary> public LocalizedExportCodeAnalysisRuleAttribute( string id, string resourceBaseName, string displayNameResourceId, string descriptionResourceId) : base(id, null) { _resourceBaseName = resourceBaseName; _displayNameResourceId = displayNameResourceId; _descriptionResourceId = descriptionResourceId; } /// <summary> /// Rules in a different assembly would need to overwrite this /// </summary> /// <returns></returns> protected virtual Assembly GetAssembly() { return GetType().Assembly; } private void EnsureResourceManagerInitialized() { var resourceAssembly = GetAssembly(); try { _resourceManager = new ResourceManager(_resourceBaseName, resourceAssembly); } catch (Exception ex) { var msg = String.Format(CultureInfo.CurrentCulture, RuleResources.CannotCreateResourceManager, _resourceBaseName, resourceAssembly); throw new RuleException(msg, ex); } } private string GetResourceString(string resourceId) { EnsureResourceManagerInitialized(); return _resourceManager.GetString(resourceId, CultureInfo.CurrentUICulture); } /// <summary> /// Overrides the standard DisplayName and looks up its value inside a resources file /// </summary> public override string DisplayName { get { if (_displayName == null) { _displayName = GetResourceString(_displayNameResourceId); } return _displayName; } } /// <summary> /// Overrides the standard Description and looks up its value inside a resources file /// </summary> public override string Description { get { if (_descriptionValue == null) { _descriptionValue = GetResourceString(_descriptionResourceId); } return _descriptionValue; } } } }
2.4. lépés: A SampleConstants osztály definiálása
Ezután definiáljon egy osztályt, amely az erőforrásfájl azon erőforrásaira hivatkozik, amelyeket a Visual Studio használ a szabály adatainak megjelenítéséhez a felhasználói felületen.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
SampleRuleConstants.cs, és válassza a hozzáadása gombot. ASampleRuleConstants.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be
SampleRuleConstants.cs, és válassza a hozzáadása gombot. ASampleRuleConstants.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
- Lépjen a
SampleRuleskönyvtárra a Visual Studio Code Explorer nézetében. - Hozzon létre egy
SampleRuleConstants.csnevű új fájlt.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár-projekt és az egyedi szabályosztályok létrehozásának útmutatójához egy alkalmazáskód-szerkesztő használatával.
- Lépjen be a
SampleRuleskönyvtárba. - Hozzon létre egy
SampleRuleConstants.csnevű új fájlt.
Nyissa meg a
SampleRuleConstants.csfájlt, és adja hozzá a következő utasításokat a fájlhoz:namespace SampleRules { internal static class RuleConstants { /// <summary> /// The name of the resources file to use when looking up rule resources /// </summary> public const string ResourceBaseName = "SampleRules.RuleResources"; /// <summary> /// Lookup name inside the resources file for the select asterisk rule name /// </summary> public const string AvoidWaitForDelay_RuleName = "AvoidWaitForDelay_RuleName"; /// <summary> /// Lookup ID inside the resources file for the select asterisk description /// </summary> public const string AvoidWaitForDelay_ProblemDescription = "AvoidWaitForDelay_ProblemDescription"; /// <summary> /// The design category (should not be localized) /// </summary> public const string CategoryDesign = "Design"; /// <summary> /// The performance category (should not be localized) /// </summary> public const string CategoryPerformance = "Design"; } }A Fájl menüben válassza a Mentés elemet.
3. lépés: Egyéni szabályosztály létrehozása
Miután hozzáadta az egyéni kódelemzési szabály által használt segédosztályokat, hozzon létre egy egyéni szabályosztályt, és nevezze el AvoidWaitForDelayRule. Az AvoidWaitForDelayRule egyéni szabály segítségével az adatbázis-fejlesztők elkerülhetik, hogy WAITFOR DELAY utasításokat használjanak tárolt eljárásokban, eseményindítókban és függvényekben.
3.1. lépés: A AvoidWaitForDelayRule osztály létrehozása
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be a
AvoidWaitForDelayRule.cs-t, majd válassza a hozzáadáslehetőséget. AAvoidWaitForDelayRule.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
A Megoldáskezelőválassza ki a
SampleRulesprojektet.A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be a
AvoidWaitForDelayRule.cs-t, majd válassza a hozzáadáslehetőséget. AAvoidWaitForDelayRule.csfájl hozzáadódik a projekthez a Megoldáskezelő-vel.
- Lépjen a
SampleRuleskönyvtárra a Visual Studio Code Explorer nézetében. - Hozzon létre egy
AvoidWaitForDelayRule.csnevű új fájlt.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozási útmutatóihoz, amelyekhez alkalmazáskód-szerkesztőt használjon.
- Lépjen be a
SampleRuleskönyvtárba. - Hozzon létre egy
AvoidWaitForDelayRule.csnevű új fájlt.
Nyissa meg a
AvoidWaitForDelayRule.csfájlt, és adja hozzá a következő utasításokat a fájlhoz:using Microsoft.SqlServer.Dac.CodeAnalysis; using Microsoft.SqlServer.Dac.Model; using Microsoft.SqlServer.TransactSql.ScriptDom; using System; using System.Collections.Generic; using System.Globalization; namespace SampleRules { class AvoidWaitForDelayRule {} }Az
AvoidWaitForDelayRuleosztály deklarációjában módosítsa a hozzáférési módosító nyilvánosra:/// <summary> /// This is a rule that returns a warning message /// whenever there is a WAITFOR DELAY statement appears inside a subroutine body. /// This rule only applies to stored procedures, functions and triggers. /// </summary> public sealed class AvoidWaitForDelayRuleA
AvoidWaitForDelayRuleosztályt azMicrosoft.SqlServer.Dac.CodeAnalysis.SqlCodeAnalysisRulealaposztályból származtatjuk:public sealed class AvoidWaitForDelayRule : SqlCodeAnalysisRuleAdja hozzá az
LocalizedExportCodeAnalysisRuleAttribute-t az osztályhoz.LocalizedExportCodeAnalysisRuleAttributelehetővé teszi, hogy a kódelemzési szolgáltatás felderítse az egyéni kódelemzési szabályokat. A kódelemzésben csakExportCodeAnalysisRuleAttribute(vagy ebből öröklő attribútum) megjelölt osztályok használhatók.LocalizedExportCodeAnalysisRuleAttributebiztosít a szolgáltatás által használt néhány szükséges metaadatot. Ez magában foglalja a szabály egyedi azonosítóját, a Visual Studio felhasználói felületén megjelenő megjelenítendő nevet, valamint egyDescription, amelyet a szabály a problémák azonosításakor használhat.[LocalizedExportCodeAnalysisRule(AvoidWaitForDelayRule.RuleId, RuleConstants.ResourceBaseName, RuleConstants.AvoidWaitForDelay_RuleName, RuleConstants.AvoidWaitForDelay_ProblemDescription Category = RuleConstants.CategoryPerformance, RuleScope = SqlRuleScope.Element)] public sealed class AvoidWaitForDelayRule : SqlCodeAnalysisRule { /// <summary> /// The Rule ID should resemble a fully-qualified class name. In the Visual Studio UI /// rules are grouped by "Namespace + Category", and each rule is shown using "Short ID: DisplayName". /// For this rule, that means the grouping will be "Public.Dac.Samples.Performance", with the rule /// shown as "SR1004: Avoid using WaitFor Delay statements in stored procedures, functions and triggers." /// </summary> public const string RuleId = "RuleSamples.SR1004"; }A RuleScope tulajdonságnak
Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleScope.Elementkell lennie, mivel ez a szabály bizonyos elemeket elemez. A szabályt a modell minden egyező eleméhez egyszer meghívja a program. Ha egy teljes modellt szeretne elemezni, akkorMicrosoft.SqlServer.Dac.CodeAnalysis.SqlRuleScope.Modelhasználható helyette.Adjon hozzá egy konstruktort, amely beállítja a
Microsoft.SqlServer.Dac.CodeAnalysis.SqlAnalysisRule.SupportedElementTypes. Ehhez szükség van az elem-specifikus szabályok esetében. Meghatározza azokat az elemeket, amelyekre ez a szabály vonatkozik. Ebben az esetben a szabályt a rendszer a tárolt eljárásokra, eseményindítókra és függvényekre alkalmazza. AMicrosoft.SqlServer.Dac.Model.ModelSchemaosztály felsorolja az összes elemezhető elemtípust.public AvoidWaitForDelayRule() { // This rule supports Procedures, Functions and Triggers. Only those objects will be passed to the Analyze method SupportedElementTypes = new[] { // Note: can use the ModelSchema definitions, or access the TypeClass for any of these types ModelSchema.ExtendedProcedure, ModelSchema.Procedure, ModelSchema.TableValuedFunction, ModelSchema.ScalarFunction, ModelSchema.DatabaseDdlTrigger, ModelSchema.DmlTrigger, ModelSchema.ServerDdlTrigger }; }Adjon hozzá egy felülbírálást a
Microsoft.SqlServer.Dac.CodeAnalysis.SqlAnalysisRule.Analyze(Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleExecutionContext)metódushoz, amelyMicrosoft.SqlServer.Dac.CodeAnalysis.SqlRuleExecutionContexthasznál bemeneti paraméterekként. Ez a metódus a lehetséges problémák listáját adja vissza.A metódus lekérte a
Microsoft.SqlServer.Dac.Model.TSqlModel,Microsoft.SqlServer.Dac.Model.TSqlObjectés TSqlFragment a környezeti paraméterből. AWaitForDelayVisitorosztály ezután a modellben szereplő összesWAITFOR DELAYutasítás listájának lekérésére szolgál.A listában szereplő minden WaitForStatement esetében létrejön egy
Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleProblem./// <summary> /// For element-scoped rules the Analyze method is executed once for every matching /// object in the model. /// </summary> /// <param name="ruleExecutionContext">The context object contains the TSqlObject being /// analyzed, a TSqlFragment /// that's the AST representation of the object, the current rule's descriptor, and a /// reference to the model being /// analyzed. /// </param> /// <returns>A list of problems should be returned. These will be displayed in the Visual /// Studio error list</returns> public override IList<SqlRuleProblem> Analyze( SqlRuleExecutionContext ruleExecutionContext) { IList<SqlRuleProblem> problems = new List<SqlRuleProblem>(); TSqlObject modelElement = ruleExecutionContext.ModelElement; // this rule does not apply to inline table-valued function // we simply do not return any problem in that case. if (IsInlineTableValuedFunction(modelElement)) { return problems; } string elementName = GetElementName(ruleExecutionContext, modelElement); // The rule execution context has all the objects we'll need, including the // fragment representing the object, // and a descriptor that lets us access rule metadata TSqlFragment fragment = ruleExecutionContext.ScriptFragment; RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor; // To process the fragment and identify WAITFOR DELAY statements we will use a // visitor WaitForDelayVisitor visitor = new WaitForDelayVisitor(); fragment.Accept(visitor); IList<WaitForStatement> waitforDelayStatements = visitor.WaitForDelayStatements; // Create problems for each WAITFOR DELAY statement found // When creating a rule problem, always include the TSqlObject being analyzed. This // is used to determine // the name of the source this problem was found in and a best guess as to the // line/column the problem was found at. // // In addition if you have a specific TSqlFragment that is related to the problem //also include this // since the most accurate source position information (start line and column) will // be read from the fragment foreach (WaitForStatement waitForStatement in waitforDelayStatements) { SqlRuleProblem problem = new SqlRuleProblem( String.Format(CultureInfo.CurrentCulture, ruleDescriptor.DisplayDescription, elementName), modelElement, waitForStatement); problems.Add(problem); } return problems; } private static string GetElementName( SqlRuleExecutionContext ruleExecutionContext, TSqlObject modelElement) { // Get the element name using the built in DisplayServices. This provides a number of // useful formatting options to // make a name user-readable var displayServices = ruleExecutionContext.SchemaModel.DisplayServices; string elementName = displayServices.GetElementName( modelElement, ElementNameStyle.EscapedFullyQualifiedName); return elementName; } private static bool IsInlineTableValuedFunction(TSqlObject modelElement) { return TableValuedFunction.TypeClass.Equals(modelElement.ObjectType) && FunctionType.InlineTableValuedFunction == modelElement.GetMetadata<FunctionType>(TableValuedFunction.FunctionType); }A Fájl menüben válassza a Mentéslehetőséget.
4. lépés: Az osztálytár létrehozása
- A Project menüjében válassza a SampleRules Tulajdonságoklehetőséget.
- Válassza az Aláírás lapot.
- Válassza A szerelvény aláírásalehetőséget.
- Az Válasszon egy erős nevet adó kulcsfájltterületen válassza az 'Új' <>lehetőséget.
- Az Erős névkulcs létrehozása párbeszédpanel Kulcsfájl nevemezőbe írja be a
MyRefKey. - (nem kötelező) Megadhat egy jelszót az erős névkulcsfájlhoz.
- Kattintson az OK gombra.
- A Fájl menüben válassza az Összes mentése lehetőséget.
- A Build menüben válassza a Megoldás összeállításalehetőséget.
- A Project menüjében válassza a SampleRules Tulajdonságoklehetőséget.
- Válassza az Aláírás lapot.
- Válassza A szerelvény aláírásalehetőséget.
- Az Válasszon egy erős nevet adó kulcsfájltterületen válassza az 'Új' <>lehetőséget.
- Az Erős névkulcs létrehozása párbeszédpanel Kulcsfájl nevemezőbe írja be a
MyRefKey. - (nem kötelező) Megadhat egy jelszót az erős névkulcsfájlhoz.
- Kattintson az OK gombra.
- A Fájl menüben válassza az Összes mentése lehetőséget.
- A Build menüben válassza a Megoldás összeállításalehetőséget.
Nyissa meg a Terminál ablakot a Visual Studio Code-ban a Nézet menü kiválasztásával, majd Terminál.
A projekt létrehozásához írja be a következő parancsot a Terminál:
dotnet build /p:Configuration=Release
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik felületre az utasításokért, hogyan hozza létre a könyvtár projektet és az egyéni szabályosztályokat alkalmazáskód-szerkesztő segítségével.
Lépjen be a
SampleRuleskönyvtárba.Futtassa a következő parancsot a projekt létrehozásához:
dotnet build /p:Configuration=Release
5. lépés: Az új kódelemzési szabály telepítése és tesztelése
Ezután telepítenie kell az összeszerelést, hogy betöltődjön az SQL adatbázis projekt létrehozásakor.
Ha olyan szabályt szeretne telepíteni, amely egy eredeti SQL-projekt Visual Studióval való létrehozásakor fog futni, másolja a szerelvényt és a társított .pdb fájlt a Bővítmények mappába.
5.1. lépés: A SampleRules-szerelvény telepítése
- Ezután másolja az összeállítási információkat a Bővítmények könyvtárba. A Visual Studio indításakor azonosítja
<Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensionscímtárak és alkönyvtárak bővítményeit, és elérhetővé teszi őket használatra. A Visual Studio 2022 esetében a<Visual Studio Install Dir>általábanC:\Program Files\Microsoft Visual Studio\2022\Enterprise. Cserélje leEnterpriseProfessionalvagyCommunitya telepített Visual Studio-kiadástól függően. - Másolja a
SampleRules.dllszerelvényfájlt a kimeneti könyvtárból a<Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensionskönyvtárba. Alapértelmezés szerint a lefordított.dllfájl elérési útjaYourSolutionPath\YourProjectPath\bin\DebugvagyYourSolutionPath\YourProjectPath\bin\Release.
Note
Előfordulhat, hogy létre kell hoznia a Extensions könyvtárat.
A szabályt most telepíteni kell, és a Visual Studio újraindítása után meg kell jelennie. Ezután indítsa el a Visual Studio új munkamenetét, és hozzon létre egy adatbázisprojektet.
5.2. lépés: Új Visual Studio-munkamenet indítása és adatbázisprojekt létrehozása
- Indítsa el a Visual Studio második munkamenetét.
- Válassza a File (Fájl)>New (Új)>Project (Projekt) lehetőséget.
- Az Új projekt párbeszédpanelen keresse meg és válassza ki SQL Server Database Project.
- A Név szövegmezőbe írja be
SampleRulesDB, és válassza OKlehetőséget.
5.3. lépés: A AvoidWaitForRule kódelemzési szabály engedélyezése
- A Megoldáskezelőválassza ki a
SampleRulesDBprojektet. - A Project menüben válassza a Tulajdonságoklehetőséget. Megjelenik a
SampleRulesDBtulajdonságok lapja. - Válassza a Kódelemzési lehetőséget. Láthatsz egy
RuleSamples.CategorySamplesnevű új kategóriát. - Bővítse ki
RuleSamples.CategorySamples. Látnia kellSR1004: Avoid WAITFOR DELAY statement in stored procedures, triggers, and functions. - A szabály engedélyezéséhez jelölje be a szabály neve melletti jelölőnégyzetet, és jelölje be a Kódelemzés engedélyezése a buildelésijelölőnégyzetet. A kódelemzés engedélyezésével kapcsolatos további információkért tekintse meg a kódelemzés áttekintését.
- A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt
WAITFOR DELAYutasítások figyelmeztetésekként jelennek meg.
Ha olyan szabályt szeretne telepíteni, amely egy eredeti SQL-projekt Visual Studióval való létrehozásakor fog futni, másolja a szerelvényt és a társított .pdb fájlt a Bővítmények mappába.
5.1. lépés: A SampleRules-szerelvény telepítése
- Ezután másolja az összeállítási információkat a Bővítmények könyvtárba. A Visual Studio indításakor azonosítja
<Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensionscímtárak és alkönyvtárak bővítményeit, és elérhetővé teszi őket használatra. A Visual Studio 2022 esetében a<Visual Studio Install Dir>általábanC:\Program Files\Microsoft Visual Studio\2022\Enterprise. Cserélje leEnterpriseProfessionalvagyCommunitya telepített Visual Studio-kiadástól függően. - Másolja a
SampleRules.dllszerelvényfájlt a kimeneti könyvtárból a<Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensionskönyvtárba. Alapértelmezés szerint a lefordított.dllfájl elérési útjaYourSolutionPath\YourProjectPath\bin\DebugvagyYourSolutionPath\YourProjectPath\bin\Release.
Note
Előfordulhat, hogy létre kell hoznia a Extensions könyvtárat.
A szabályt most telepíteni kell, és a Visual Studio újraindítása után meg kell jelennie. Ezután indítsa el a Visual Studio új munkamenetét, és hozzon létre egy adatbázisprojektet.
5.2. lépés: Új Visual Studio-munkamenet indítása és adatbázisprojekt létrehozása
- Indítsa el a Visual Studio második munkamenetét.
- Válassza a File (Fájl)>New (Új)>Project (Projekt) lehetőséget.
- Az Új projekt párbeszédpanelen keresse meg, majd válassza ki az SQL Server adatbázisprojektet, SDK-stílusú (előzetes verzió).
- A Név szövegmezőbe írja be
SampleRulesDB, és válassza OKlehetőséget.
5.3. lépés: A AvoidWaitForRule kódelemzési szabály engedélyezése
- A Megoldáskezelőválassza ki a
SampleRulesDBprojektet. - Kattintson duplán a projektcsomópontra a projektfájl megnyitásához. A
SampleRulesDBprojektfájl megjelenik egy szövegszerkesztőben. - Engedélyezze a kódelemzést az SQL-projektfájl build során a
RunSqlCodeAnalysistulajdonságottrueállítva. - A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt
WAITFOR DELAYutasítások figyelmeztetésekként jelennek meg.
5.1. lépés: A SampleRules-szerelvény elhelyezése egy helyi NuGet-forrásban
- Ha nincs helyi forrása a NuGet-csomagoknak, adjon hozzá egy mappát a helyi gépen a NuGet-csomagok helyi teszteléshez való tárolásához. Az alábbi parancs futtatásával ellenőrizheti jelenlegi NuGet-forrásait:
dotnet nuget list source
- Ha egy helyi forrás nem szerepel a listában, az alábbi paranccsal adhat hozzá egyet,
<local folder path>helyettesítve a helyi mappa elérési útjával, példáulC:\NuGetPackagesvagy~/NuGetPackages:
dotnet nuget add source <local folder path>
- Másolja a
SampleRules.dllszerelvényfájlt a kimeneti könyvtárból a helyi NuGet-forráskönyvtárba. Alapértelmezés szerint a lefordított.dllfájl elérési útjaYourSolutionPath\YourProjectPath\bin\DebugvagyYourSolutionPath\YourProjectPath\bin\Release.
5.2. lépés: SampleRules használata adatbázisprojektben
- Hozzon létre egy új Microsoft.Build.Sql-projektet, vagy nyisson meg egy meglévőt.
- Adjon hozzá a projektfájlban egy csomaghivatkozást a MintaRules NuGet-csomaghoz. Az alábbi példa bemutatja, hogyan adhat hozzá hivatkozást a SampleRules NuGet-csomaghoz a
.sqlprojfájlban:
<ItemGroup>
<PackageReference Include="SampleRules" Version="1.0.0" />
</ItemGroup>
5.3. lépés: Kódelemzés engedélyezése buildeléskor
- Engedélyezze a kódelemzést az SQL-projektfájl build során a
RunSqlCodeAnalysistulajdonságottrueállítva. A SampleRules NuGet-csomag a projekt létrehozásakor és alapértelmezés szerint belefoglalásakor lesz visszaállítva. - A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt
WAITFOR DELAYutasítások figyelmeztetésekként jelennek meg.
Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztály alkalmazáskód-szerkesztő segítségével való létrehozásához.
5.1. lépés: A SampleRules-szerelvény elhelyezése egy helyi NuGet-forrásban
- Ha nincs helyi forrása a NuGet-csomagoknak, adjon hozzá egy mappát a helyi gépen a NuGet-csomagok helyi teszteléshez való tárolásához. Az alábbi parancs futtatásával ellenőrizheti jelenlegi NuGet-forrásait:
dotnet nuget list source
- Ha egy helyi forrás nem szerepel a listában, az alábbi paranccsal adhat hozzá egyet,
<local folder path>helyettesítve a helyi mappa elérési útjával, példáulC:\NuGetPackagesvagy~/NuGetPackages:
dotnet nuget add source <local folder path>
- Másolja a
SampleRules.dllszerelvényfájlt a kimeneti könyvtárból a helyi NuGet-forráskönyvtárba. Alapértelmezés szerint a lefordított.dllfájl elérési útjaYourSolutionPath\YourProjectPath\bin\DebugvagyYourSolutionPath\YourProjectPath\bin\Release.
5.2. lépés: SampleRules használata adatbázisprojektben
- Hozzon létre egy új Microsoft.Build.Sql-projektet, vagy nyisson meg egy meglévőt.
- Adjon hozzá a projektfájlban egy csomaghivatkozást a MintaRules NuGet-csomaghoz. Az alábbi példa bemutatja, hogyan adhat hozzá hivatkozást a SampleRules NuGet-csomaghoz a
.sqlprojfájlban:
<ItemGroup>
<PackageReference Include="SampleRules" Version="1.0.0" />
</ItemGroup>
5.3. lépés: Kódelemzés engedélyezése buildeléskor
- Engedélyezze a kódelemzést az SQL-projektfájl build során a
RunSqlCodeAnalysistulajdonságottrueállítva. A SampleRules NuGet-csomag a projekt létrehozásakor és alapértelmezés szerint belefoglalásakor lesz visszaállítva. - A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt
WAITFOR DELAYutasítások figyelmeztetésekként jelennek meg.