Czy w ogóle istnieje # definiowanie stałej na podstawie rozwiązania? [duplikat]
Czy w ogóle istnieje #define Constant
rozwiązanie Visual Studio?
Można zdefiniować stałą na podstawie csproject, a można umieścić #define constant
w pliku cs, ale zastanawiam się, czy można zdefiniować ją na podstawie vs sln?
5 answers
Możesz użyć wariacji na temat podejścia Ritcha ze wspólnymi ustawieniami projektu. Zasadniczo musisz wprowadzić jedną zmianę na końcu każdego pliku projektu w rozwiązaniu:
<PropertyGroup Condition="'$(SolutionDir)' == '' or
'$(SolutionDir)' == '*undefined*'">
<SolutionDir>..\..\</SolutionDir>
</PropertyGroup>
<Import Project="$(SolutionDir)CommonSettings.targets" />
</Project>
Następnie można zdefiniować Komendy.cele, aby zawierać szerokie ustawienia rozwiązania.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
<PropertyGroup>
<TacoBuild>true</TacoBuild>
</PropertyGroup>
</Project>
To w zasadzie wszystko, chyba że chcesz nadpisać lub scalić ustawienia projektu już zdefiniowane w każdym projekcie. Poniższy link omawia jak to zrobić w niektórych szczegóły.
Http://www.ademiller.com/blogs/tech/2007/12/common-project-settings-for-your-visual-studio-solution/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 05:40:21
Mam inne podejście do tego:
-
Edycja globalnego pliku konfiguracyjnego. Na przykład w moim przypadku jest .netcf2. 0 czyli
$(MSBuildBinPath)\microsoft.compactframework.csharp.targets
.Dodaj następujący wiersz:
<Import Project="$(SolutionDir)CommonSettings.targets" Condition="exists('$(SolutionDir)CommonSettings.targets')" />
To ma powiedzieć MSBuild importować CommonSettings.cele, jeśli istnieje w folderze rozwiązanie.
-
Utwórz CommonSettings.cele w folderze rozwiązania.
Na przykład do zdefiniowania symbolu ABC:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <DefineConstants>$(DefineConstants);ABC</DefineConstants> </PropertyGroup> </Project>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-05 03:12:21
Pośrednio jest. Jeśli ustawisz zmienną środowiskową z flagą i uruchomisz VS:
set TacoBuild=true
devenv.eve bigproject.sln
Lub uruchom MSBuild z linii poleceń:
msbuild /p:TacoBuild=true
W Twoim .pliki csproj, które musisz dodać PropertyGroup:
<PropertyGroup Condition="'$(TacoBuild)'=='true'">
<DefineConstants>$(DefineConstants);TacoBuild</DefineConstants>
</PropertyGroup>
W Twoim kodzie potrzebujesz preprocesora def:
#if TacoBuild
const int myConst = 42;
#endif
Jedyną alternatywą VS jest zdefiniowanie definicji preprocesora w Ustawieniach kompilacji dla nowej konfiguracji projektu i użycie tej konfiguracji w kompilacji.
Rozwiązaniem non MSBuild jest Utwórz stałe.plik cs i napisz narzędzie ustawień niestandardowych, które aktualizuje plik cs. Chciałbym, żeby było lepsze rozwiązanie, ale nie znalazłem żadnego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 02:16:57
Jest to możliwe w przypadku projektów Unity.
Tworzenie pliku o nazwie
Mcs.rsp (odpowiednik. Net 3.5) lub
csc.rsp (odpowiednik. Net 4.0 )
in /Assets/ folder pozwala ci to zrobić.
Przykład : / Align = "left" / plik rsp zawiera:
-define:THIS_IS_MY_GLOBAL_PREPROCESSOR_CONSTANT
-define:ANOTHER_GLOBAL_PREPROCESSOR_CONSTANT
W projekcie, w dowolnym odtwarzaczu lub edytorze skrypt c#:
#if THIS_IS_MY_GLOBAL_PREPROCESSOR_CONSTANT
Debug.Log("THIS_IS_MY_GLOBAL_PREPROCESSOR_CONSTANT is defined"); // compiles
#else
Debug.Log("THIS_IS_MY_GLOBAL_PREPROCESSOR_CONSTANT is not defined");
#endif
Testowane Na Unity 2019.1.2
Https://docs.unity3d.com/Manual/PlatformDependentCompilation.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-12 14:39:05
Począwszy od MSBuild 15.0, możesz użyć Directory.Buduj.właściwości do definiowania stałych w wielu projektach. https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2019
Jest jak csproj, ale definiuje wartości, które będą miały zastosowanie do wszystkich CSPROJ w folderach potomnych.
Utwórz plik na górze drzewa folderów (aby zastosować do wszystkich dzieci csproj), o nazwie Katalog.Buduj.rekwizyty.
Dodaj:
<Project>
<PropertyGroup>
<DefineConstants>MaConstante</DefineConstants>
</PropertyGroup>
</Project>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-04 09:00:06