Ich habe ein Visual Studio 2010-Projekt, das auf einige Komponenten von Drittanbietern verweist. Ihre Assemblys werden von XML-Dokumentationsdateien begleitet, die für uns (und nur für uns) Entwickler nützlich sind. Und wenn das Projekt erstellt wird (entweder im Debug- oder im Release-Modus), werden diese XML-Dateien in das Build-Verzeichnis kopiert.
Ich kann anscheinend keine Einstellung oder keinen Schalter finden, um die Kopie dieser XML-Dateien in das Build-Verzeichnis zu deaktivieren, weder in Visual Studio noch in MSBuild. Ein Post-Build-Skript kann eine Option sein, aber es stinkt. Irgendwelche Ideen? Danke dir.
visual-studio
msbuild
Humberto
quelle
quelle
Antworten:
Wenn Sie ein Projekt erstellen, werden die XML- / PDF-Dateien über die Task ResolveAssemblyReference erfasst. Wenn ResolveAssemblyReference aufgerufen wird, wird eine Liste der Dateierweiterungen für verwandte Dateien übergeben. Diese Liste der Dateierweiterungen wird in der MSBuild-Eigenschaft AllowedReferenceRelatedFileExtensions erfasst . Standardmäßig enthält diese Liste ".pdb; .xml".
Wenn Sie alle zugehörigen Referenzdateien von der Erfassung ausschließen möchten, überschreiben Sie einfach den Wert der Eigenschaft auf etwas, dessen zugehörige Dateien keine Erweiterungen haben. Beispielsweise können Sie AllowedReferenceRelatedFileExtensions auf "-" setzen.
Sie können auch die Liste der Dateien anpassen, die von diesem zurückgegeben werden. Wenn Sie nur .pdb-Dateien finden möchten, müssen Sie übergeben
AllowedReferenceRelatedFileExtensions=".pdb"
. In diesem Fall werden auch alle Referenzen kopiert, die eine .pdb-Datei neben der .dll / .exe haben. Sie können dies auch verwenden, um andere verwandte Dateien zu kopieren, die möglicherweise nicht mit .pdb / .xml enden. Wenn Sie beispielsweise eine Assembly mit dem Namen MyAssembly.dll haben und in demselben Ordner MyAssembly.pdb und MyAssembly.foo vorhanden sind, werdenAllowedReferenceRelatedFileExtensions=".pdb;.foo"
sowohl die .pdb- als auch die .foo-Datei in das Ausgabeverzeichnis kopiert.quelle
AllowedReferenceRelatedFileExtensions
?Die Visual Studio-Projektdatei hat das gleiche Format wie jede msbuild-Datei. Sie können die Bedingung also manuell in den entsprechenden Abschnitt einfügen, um Ihre XML-Dateien nicht zu kopieren, wenn der Konfigurationsname "Release" lautet.
Es sollte sich ändern
zu
oder sowas.
quelle
set MSBuildEmitSolution=1
oder übergeben Sie das Eigenschaftsargument (p:msbuildemitsolution=1
).Was ist das Problem beim Kopieren der XML-Dateien in den Ordner bei Release-Builds? Es scheint mir, dass dies in Ordnung ist und dass das eigentliche Problem im Code liegt, der Dateien aufnimmt, um sie im Installationsprogramm abzulegen. Das Abrufen von DLLs von Drittanbietern aus Ihrem eigenen Ordner bin \ release ist meiner Meinung nach keine gute Vorgehensweise. Ich würde mein Installationsprogramm DLLs von Drittanbietern aus ihrem eigenen Ordner in meinem Quellbaum abholen lassen.
quelle
Wenn die .xml / .pdb als Build-Aktion "Inhalt" (usw.) markiert sind, können Sie sie in "Keine" ändern. Sie sollten auch sicherstellen, dass die Ausgabe von Copy-to-Build falsch ist .
Sind beide gesetzt?
quelle
Die Einstellung befindet sich in den Eigenschaften des betreffenden Projekts auf der Registerkarte "Erstellen" und deaktivieren Sie "XML-Dokumentationsdatei". Es ist auch eine MSBuild-Eigenschaft, die
<DocumentationFile>
unter der<PropertyGroup>
für Ihre Build-Konfiguration geltenden Datei in der. * Proj-Datei aufgerufen wird.quelle