W .csproj możesz ustawić opcję UseArtifactsOutput.
<PropertyGroup> <UseArtifactsOutput>true</UseArtifactsOutput> </PropertyGroup> Spowoduje ona to, że podczas kompilacji i publikacji, zamiast tworzyć oddzielnie foldery /bin, /obj, /publish w tej samej lokacji co .csproj - dla każdego projektu oddzielnie, utworzone one zostaną w folderze 'artifacts'. Co więcej, 'artifacts' znajduje się w tej samej lokacji co .sln, więc wszystkie projekty mogą produkować artefakty do tego samego folderu.
@Hektorrr no i co to za różnica? W czym jest lepsza jedna albo druga opcja. Jedyne co mi przychodzi do głowy to np łatwiej pod montować jeden katalog jak chcesz żeby te pliki zapisały się na innym dysku
@zibizz1: To już Ty musisz zdecydować, czy którakolwiek z nich jest lepsza dla Ciebie. To są dwie alternatywne opcje. UseArtifactsOutput zostało wprowadzone bo zespół dotnetu stwierdził, że jest bałagan w folderze z projektami i jest mniej wygodniej nawigować między artefaktami produkowanymi przez solucje składające się z wielu projektów. Natomiast wcale nie musisz jej używać jak nie chcesz. Domyślne zachowanie się nie zmieni ze
@zibizz1: może być korzystne gdy masz parę różnych executable które jednak logicznie są ze sobą powiązane i razem releasowane czy zbierane w jakaś paczkę. Oczywiście możesz to opędzić jakimś cicd ale tak to od razu na poziomie lokalnego budowania juz masz informacje np że dwa executable korzystają z różnej wersji bibliotek i jakaś wersja została nadpisana inną i nie chodzi a powinno byc spójnie. Dodatkowo łatwiej też chyba wtedy ogarnąć Delta
@LeopoldStuff: w C# nigdy nie widziałem takich pakietów że parę różnych executable jest trzymanych razem, ale wolałbym zrobić jeden projekt zbiorczy, dodać je jako zależności i zajdzie wtedy walidacja zależności i ich wersji. Co to są Delta buidy? Chodzi o to że budując rozwiązanie on nie rusza projektów które się nie zmieniły? No to chyba własnie jeśli jeden projekt jest w kilku rozwiązaniach to jeśli coś się zmieni w przypadku UseArtifactsOutput
@zibizz1: trochę popłynąłem bo jednak ten nowy feature tworzy oddzielne foldery pod projekty tyle, że w jednym centralnym miejscu. 📁 artifacts └──📂 <Type of output> └──📂 <Project name> └──📂 <Pivot>
Jak faktycznie chcesz mieć wszystko wrzucane do jednego folderu outputowego to właśnie używa się Directory.Build.Props i myślałem że ten feature nieco upraszcza właśnie definiowaniego tego w build propsach. Może podam inne użycie
W .csproj możesz ustawić opcję
UseArtifactsOutput
.<PropertyGroup>
<UseArtifactsOutput>true</UseArtifactsOutput>
</PropertyGroup>
Spowoduje ona to, że podczas kompilacji i publikacji, zamiast tworzyć oddzielnie foldery /bin, /obj, /publish w tej samej lokacji co .csproj - dla każdego projektu oddzielnie, utworzone one zostaną w folderze 'artifacts'. Co więcej, 'artifacts' znajduje się w tej samej lokacji co .sln, więc wszystkie projekty mogą produkować artefakty do tego samego folderu.
Więcej info -> docsy
#programowanie #csharp #dotnet
@zibizz1: To już Ty musisz zdecydować, czy którakolwiek z nich jest lepsza dla Ciebie. To są dwie alternatywne opcje.
UseArtifactsOutput
zostało wprowadzone bo zespół dotnetu stwierdził, że jest bałagan w folderze z projektami i jest mniej wygodniej nawigować między artefaktami produkowanymi przez solucje składające się z wielu projektów.Natomiast wcale nie musisz jej używać jak nie chcesz. Domyślne zachowanie się nie zmieni ze
📁 artifacts
└──📂 <Type of output>
└──📂 <Project name>
└──📂 <Pivot>
Jak faktycznie chcesz mieć wszystko wrzucane do jednego folderu outputowego to właśnie używa się Directory.Build.Props i myślałem że ten feature nieco upraszcza właśnie definiowaniego tego w build propsach.
Może podam inne użycie