Mam projekt Visual Studio 2010, który zawiera odniesienia do niektórych składników innych firm. Ich zespołom towarzyszą pliki dokumentacji XML, które są przydatne dla nas (i tylko dla nas) programistów. Za każdym razem, gdy projekt jest budowany (w trybie debugowania lub wydania), te pliki XML są kopiowane do katalogu kompilacji.
Nie mogę znaleźć ustawienia lub przełączenia, aby wyłączyć kopiowanie tych plików XML do katalogu kompilacji, ani w programie Visual Studio, ani w programie MSBuild. Skrypt po kompilacji może być opcją, ale śmierdzącą. Jakieś pomysły? Dziękuję Ci.
visual-studio
msbuild
Humberto
źródło
źródło
Odpowiedzi:
Podczas tworzenia projektu pliki .xml / .pdb są gromadzone za pośrednictwem zadania ResolveAssemblyReference. Gdy wywoływana jest ResolveAssemblyReference, przekazywana jest lista rozszerzeń plików dla powiązanych plików. Ta lista rozszerzeń plików jest przechwytywana we właściwości MSBuild AllowedReferenceRelatedFileExtensions . Domyślnie ta lista będzie zawierać „.pdb; .xml”.
Jeśli chcesz wykluczyć wszystkie powiązane pliki referencyjne z pobierania, po prostu nadpisz wartość właściwości na coś, czego powiązane pliki nie będą miały rozszerzeń. Na przykład można ustawić AllowedReferenceRelatedFileExtensions na „-”.
Możesz także dostosować listę plików, które są przez to zwracane. Jeśli chcesz znaleźć tylko pliki .pdb, musisz przekazać
AllowedReferenceRelatedFileExtensions=".pdb"
. W takim przypadku wszelkie odniesienia, które mają plik .pdb obok .dll / .exe, również zostaną skopiowane. Możesz również użyć tego do skopiowania innych powiązanych plików, których nazwa może nie kończyć się na .pdb / .xml. Na przykład, jeśli masz zestaw, do którego istnieje odniesienie o nazwie, MyAssembly.dll iw tym samym folderze istnieje MyAssembly.pdb i MyAssembly.foo. Jeśli ustawisz,AllowedReferenceRelatedFileExtensions=".pdb;.foo"
zarówno plik .pdb, jak i .foo zostaną skopiowane do katalogu wyjściowego.źródło
AllowedReferenceRelatedFileExtensions
?Plik projektu programu Visual Studio ma ten sam format, co każdy plik msbuild. Możesz więc ręcznie dodać warunek do odpowiedniej sekcji, aby nie kopiować plików xml, jeśli nazwa konfiguracji to „Release”.
Powinno się zmieniać
<ItemGroup>
do
<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">
lub coś w tym stylu.
źródło
set MSBuildEmitSolution=1
lub przekaż argument właściwości (p:msbuildemitsolution=1
).Jeśli pliki .xml / .pdb są oznaczone jako akcja kompilacji „Treść” (itp.), Możesz je zmienić na „Brak”. Powinieneś również upewnić się, że dane wyjściowe kopiowania do kompilacji są fałszywe .
Czy oba te elementy są ustawione?
źródło
Jaki jest problem z kopiowaniem plików XML do folderu podczas kompilacji wydania? Wydaje mi się, że to jest w porządku, a prawdziwy problem dotyczy kodu, który pobiera pliki, aby umieścić je w instalatorze. Moim zdaniem pobieranie plików DLL innych firm z własnego folderu bin \ release nie jest dobrą praktyką. Chciałbym, aby mój instalator pobrał pliki DLL innych firm z własnego folderu w moim drzewie źródłowym.
źródło
To ustawienie znajduje się we właściwościach danego projektu, na karcie „Kompilacja” odznacz opcję „Plik dokumentacji XML”. Jest to również właściwość programu MSBuild o nazwie
<DocumentationFile>
w ramach odpowiedniej<PropertyGroup>
dla konfiguracji kompilacji w pliku. * Proj.źródło