W VS 2008, istnieje sposób, aby ustawić katalog pośredni (gdzie idą pliki .obj, a nie ostateczne cele) w projekcie C#?Ustaw katalog pośredni w C# Project
Odpowiedz
Nie wierzę w to. Możesz jednak skopiować pliki wykonywalne, pliki DLL i cokolwiek innego do innego folderu w zdarzeniu pokompilowanym. (Zbuduj kartę Wydarzenia w Właściwości projektu)
Musisz zastąpić BaseMenedicateIutputPath msbuild var, więcej o nim here.
To działa w większości przypadków, ale szukałem sposobu na ustawienie go w każdym projekcie, więc budowanie z IDE nie powodowałoby zanieczyszczenia folderu źródłowego. Jednak ustawienie BaseIntermediateOutputPath w projekcie wyzwala ostrzeżenie o zabezpieczeniach. Niestety, nie wydaje się to możliwe. westchnienie... –
Ostrzegawcze ostrzeżenie jest po to, aby powiadomić Cię, że wydarzyło się coś niezwykłego, możesz wyciszyć ostrzeżenie i nie zobaczysz go ponownie, dopóki nie zmienisz czegoś innego. –
Nie ma nic niezwykłego w dostosowywaniu pośredniej lokalizacji wyjściowej. Visual Studio chętnie akceptuje projekty C++ dostosowujące położenie plików pośrednich (poprzez właściwość IntDir) bez okna dialogowego z ostrzeżeniem o bezpieczeństwie, ale rzuca furię, gdy to samo dzieje się w projekcie C#. –
Znalazłem rozwiązanie tego za pomocą Visual Studio Express 2013; Zapomniałem, która wersja VS wprowadziła MSBuild, i nie mogę powiedzieć na pewno, że to zadziała dla każdej innej wersji. Ale tutaj:
W C:\Windows\Microsoft.NET\Framework
są podkatalogi odpowiadające wersjom .NET; W przypadku VSX2013 w moim systemie interesującym folderem jest v4.0.30319
. (To jest wersja .NET używana przez MSBuild, a nie ta, której celuję.) W tym folderze znajdują się pliki .targets
, które są kolekcjami reguł MSBuild.
Na początku Microsoft.CSharp.targets
są niektóre reguły, które będą importować więcej plików reguł. Trzecia z tych instrukcji importu importuje z pliku określonego przez zmienną kompilacji CustomBeforeMicrosoftCSharpTargets
. Możesz być w stanie dowiedzieć się nazwa tego czytając przepisy, ale łatwiej jest dodać krok niestandardowy kompilacji
echo $(CustomBeforeMicrosoftCSharpTargets)
produkcji i spojrzeć na wyjściu. W moim przypadku pełna ścieżka była
C:\Program Files (x86)\MSBuild\v12.0\Custom.Before.Microsoft.CSharp.targets
UWAGA: w moim przypadku, nie było już folder C:\Program Files (x86)\MSBuild\12.0
ale nie v12.0
.
Więc (jako admin) Stworzyłem folder i umieszcza plik Custom.Before.Microsoft.CSharp.targets
, który wygląda tak:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BaseIntermediateOutputPath>$(SolutionDir)\Build\$(MSBuildProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
UWAGA: $(ProjectName)
nie działa, użyj $(MSBuildProjectName)
.
Kiedy zbudowany, że OBJS zostały objęte katalogu budowy pod rozwiązania, a nie w ramach projektu, w podkatalogu z typowej konwencji nazewnictwa: Debug
lub Release
lub x86\Debug
lub x64\Release
.
To nie działało dokładnie tak, jak było pożądane: naprawdę chciałem umieścić je w %TEMP%
, ale zmienna nie została rozwinięta, więc skończyłem z folderem kompilacji w ramach projektu o nazwie %TEMP%
. Umieszczanie rozwiniętej ścieżki w regule działało dobrze, ale inne podfoldery z %APPDATA%
nie powiodły się z powodu problemów z uprawnieniami.
Zakładam, że można to wykorzystać do skonfigurowania dowolnej z tych zmiennych; czytanie domyślnych plików .TARGETS
jest obowiązkowe, ale są tam przydatne komentarze.
Jeszcze jedna uwaga: powyższe podejście działa dla VS CE 2017. 'CustomBeforeMicrosoftCSharpTargets' ma wartość' C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ v15.0', i znowu I musiał utworzyć folder 'v15.0'; nie wymaga żadnych zmian w kodzie XML. –
- 1. C# Ustaw domyślny katalog pobierania chrome WebDriver?
- 2. jak rzutować wskaźnik pośredni w Objective-C
- 3. C# Project Global AssemblyInfo
- 4. Ustaw katalog dla plików Pośredniczące (jak .obj) w CMake
- 5. C# class class project project injection inset bootstrap
- 6. C# Project Management with Maven
- 7. Ustaw JFileChooser, aby otworzyć bieżący katalog
- 8. Ustaw runtimepath, dodając katalog z wyrażenia w vim?
- 9. Jak uwzględnić wartość pola Project Project w żądaniu CSOM
- 10. Domyślny interfejs ustaw w C#
- 11. Ustaw w enum dla C#
- 12. Pobierz i ustaw w C#
- 13. Visual C# Beginner Empty Project Pomoc?
- 14. Konwertuj bibliotekę C# do MSTest Project
- 15. Pośredni związek w strukturze REST Django?
- 16. Ustaw czas maszyny C#
- 17. build.xml w Java project
- 18. Ustaw hdsocs/podfolder Apache jako działający katalog GIT
- 19. Jak utworzyć tymczasowy katalog w C++?
- 20. Katalog roboczy w pliku Visual Studio C#
- 21. Katalog programu w Objective-C (OSX)
- 22. Haskell: Zachęcanie GHC wywnioskować prawidłowy typ pośredni
- 23. Katalog roboczy testu google w Visual Studio
- 24. Project-Embedded IoC Container
- 25. Ustaw uprawnienia do plików w C#
- 26. developer.android.com/training bitmapfun project
- 27. JavaDoc w Eclipse Android Project
- 28. Wyświetl błędy w Intellij Project
- 29. Xcode, Git, a pośredni budować foldery
- 30. Biblioteka klasy Project Project VS App_Code - Plusy/minusy?
+1 za dobre pytanie. Próbowałem zrobić to samo z tych samych powodów (aby nie zanieczyścić katalogu źródłowego z wynikiem kompilatora) i nie powiodło się (bez okna dialogowego z ostrzeżeniem o bezpieczeństwie - ale jest to nie do przyjęcia dla mnie). –
Ktoś wie, czy ta sytuacja uległa zmianie w Visual Studio 2010/.NET4 ...? –