Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
NÁSTROJ MSBuild je vysoce přizpůsobitelný a rozšiřitelný (viz Přizpůsobení sestavení pro podrobnosti), takže zvláštní péče by měla být placena správné konfiguraci prostředí a sestavení.
Omezení přístupu k zápisu do umístění instalace
Nainstalujte nástroj MSBuild (bez ohledu na to, jestli se používá Visual Studio, sada .NET SDK nebo samostatná sada) do umístění, kde mají přístup k zápisu jenom důvěryhodní uživatelé.
Logiku sestavení můžete změnit změnou nebo přidáním různých binárních souborů a souborů XML umístěných vedle spustitelného souboru MSBuild a podsložek spustitelného souboru MSBuild. Proto by do složky měli být povoleni pouze důvěryhodní uživatelé.
Související konfigurace
-
MSBuildExtensionsPath a MSBuildUserExtensionsPath – konkrétně
ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}vlastnost, kterou lze použít k odhlášení z logiky rozšíření
Spusťte sestavení pouze na zdrojích, které znáte a kontrolujete.
Spusťte nástroj MSBuild (pro sestavování a obnovování projektů, ale také pro otevírání projektů v Visual Studio) pouze na zdrojích, kterým plně důvěřujete.
Logiku NÁSTROJE MSBuild je možné rozšířit v souborech skriptu sestavení, včetně souborů projektu, takže neznámá logika sestavení by měla být považována za schopnou spustit libovolný kód v prostředí sestavení.
Související konfigurace
Spuštění sestavení v ověřeném vyhrazeném umístění
Nástroj MSBuild může automaticky zahrnovat logiku ze složky projektu nebo řešení a všechny nadřazené složky až do kořenového adresáře jednotky. To zahrnuje .user soubory, [before|after].{solution}.targets soubory, Directory.Build.[props|targets|rsp] soubory a další.
Ujistěte se, že oprávnění uživatelé nebo účty mají přístup k zápisu do umístění se soubory souvisejícími s sestavením a všechny složky v hierarchické struktuře až do kořenového adresáře jednotky.
Chcete-li zabránit nezamýšleným zahrnutím Directory.Build.[props|targets|rsp], můžete tyto soubory zahrnout do kořenového adresáře vašich zdrojů. Soubor může být prázdný element MSBuild Project .
Související konfigurace
Znalost a kontrola odkazovaných balíčků a pocházejících informačních kanálů
Logiku sestavení můžou automaticky rozšířit balíčky NuGet. Tato logika se provádí při obnovení, která zahrnuje logiku do spuštění sestavení nebo kompilace. Ujistěte se, že jste obeznámeni s typy prostředků balíčku NuGet a jejich rolí během sestavování, kompilace a modulu runtime.
buildKonkrétně , buildTransitivebuildMultitargeting a analyzers prostředky jsou automaticky zapojeny (a tak automaticky spouštěny během) sestavení, pokud nejsou explicitně odhlasovány.
Použijte ExcludeAssets vždy, když nepotřebujete logiku rozšíření sestavení nebo kompilátoru z odkazovaného balíčku (nebo ještě lépe, pouze explicitně IncludeAssets logiku sestavení, pokud ji chcete).
Ujistěte se, že znáte aktuální dokumentaci a pokyny od týmu NuGet. Pro tento problém se podívejte na PackageReference dokument v souborech projektu jako autoritativní zdroj.
Související konfigurace
Znalost a kontrola spouštěcího skriptu nebo procesu sestavení
Logiku sestavení můžou ovlivnit argumenty příkazového řádku nebo proměnné prostředí, zejména ty, které můžou vést k injektáži modulů plug-in (například vlastních protokolovacích modulů) nebo logiky sestavení (například skripty sestavení).MSBuildUserExtensionsPath Ujistěte se, že víte, jaké argumenty příkazového řádku a proměnné prostředí se použijí pro proces MSBuild. Tímto způsobem lépe pochopíte, jak je ovlivněna logika sestavení.
Použití vyhrazeného uživatelského účtu a relace ke spuštění sestavení
Nespouštět pod účtem, který by se dal použít ve stejném systému k dřívějšímu spuštění neznámých procesů nebo skriptů, včetně jiného sestavení. Zvláště pokud nesouvisející sestavení pod stejným uživatelským účtem mohlo běžet na zdrojích, které nejsou plně důvěryhodné a známé.
Nástroj MSBuild může zdrojovou logiku z různých umístění z profilu uživatele (konkrétně sada MSBuild SDK automaticky obsahuje logiku sestavení umístěnou v umístění MSBuildUserExtensionsPath ) nebo z umístění vložených proměnnými prostředí (můžete přizpůsobit MSBuildUserExtensionsPath pomocí vlastnosti MSBuild se stejným názvem. Tato vlastnost nemá výchozí hodnotu, takže ji lze zdrojovat z proměnné prostředí se stejným názvem).
Poznámka:
Jako podrobnosti implementace nástroj MSBuild vyhledá a komunikuje s jeho trvalými procesy prostřednictvím pojmenovaných kanálů a mutexů. V Windows tyto pojmenované kanály a mutexy sdílejí obor názvů pro celý počítač. Proces pod jiným místním účtem tedy může tyto názvy zabírat a blokovat jejich vytvoření sestavení. Tato situace se týká pouze dostupnosti (odepření služby). Řízení přístupu k operačnímu systému stále brání jinému účtu ve čtení nebo změně sestavení. Preferujte počítač, ve kterém jsou všechny místní účty důvěryhodné nebo izolované relace, kontejner nebo virtuální počítač.
Související konfigurace
-
MSBuildExtensionsPath a MSBuildUserExtensionsPath: Vlastnost můžete nastavit
ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}tak, abyfalsese odhlásila automatické zahrnutí konkrétní logiky sestavení rozšíření.