Ich habe MVC 4.0 WebApi-Projekt mit automatisch generierter Hilfe basierend auf diesem .
Meine Modellklassen werden in anderen Projekten in meiner Lösung gespeichert. Die Generierung einer XML-Datei ist für jedes Projekt aktiviert (Projekteigenschaften -> Erstellen -> OutPut -> XML-Dokumentationsdatei - Aktiviert).
Im lokalen Debug ist alles in Ordnung - XML-Dateien werden in das Projektverzeichnis kopiert und ich sehe Kommentare für Felder / Klassen aus anderen Projekten.
Aber wenn ich das Veröffentlichungsprofil (in Ordner) verwende, werden XML-Dateien nicht in den Ausgabeordner kopiert. Es wird nur eine XML-Datei aus dem WebApi-Hauptprojekt kopiert. Daher sehe ich keine Kommentare zu Klassen aus anderen Projekten.
asp.net-mvc-4
asp.net-web-api
msbuild
publish-profiles
Alexander Subbotin
quelle
quelle
Antworten:
Ich hatte ein ähnliches Problem, für mich war die Antwort ein bisschen "doh!" Moment.
In den Projekteinstellungen hatte ich die XML-Dokumentationsdatei nur unter der Debug-Konfiguration und nicht unter Release aktiviert. Ich habe mit Release bereitgestellt, sodass die XML-Dokumentation nicht generiert wurde. Das Update stellte also sicher, dass die XML-Dokumentation sowohl für Debug- als auch für Release-Konfigurationen aktiviert wurde.
quelle
Show All Files
um sicherzustellen, dass .xml-Dateien sindIncluded In Project
Sie können dies auf zwei verschiedene Arten tun:
1) Gehen Sie zu Ihrer Projekteigenschaft -> wählen Sie die Erstellungsoption -> überprüfen Sie "XML-Dokumentationsdatei" -> fügen Sie den Pfad "App_data \ XMLDocument.xml" hinzu -> speichern Sie die Einstellung, erstellen Sie Ihr Projekt -> fügen Sie Ihr XMLDocument hinzu. XML-Datei -> Eigenschaft auswählen -> In Ausgabeverzeichnis kopieren -> "Immer kopieren" auswählen
2) Gehen Sie zu Ihrer Projekteigenschaft -> wählen Sie die Option "Web packen / veröffentlichen" -> anzuzeigende Elemente -> wählen Sie "alle Dateien in diesem Projekt" aus der Dropdown-Liste aus
quelle
bin
Ordner kopiert werden . Das xmldocument wird von einem anderen Klassenbibliotheksprojekt generiert. nicht das Webprojekt, das ich veröffentlicht habe. BTW in vs2015Ich hatte das gleiche Problem, dass nur die XML-Datei aus dem Webapi-Projekt bereitgestellt wurde.
Um dies zu beheben, musste ich dies innerhalb des ersten
PropertyGroup
Elements zu meiner Web (Api) -Projektdatei hinzufügen .<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>
Danach wurde die Dokumentation XML-Dateien aller Projekte (wo es aktiviert ist) veröffentlicht !
quelle
$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets
zu sehen, was los ist.Ich konnte dies mit nur einem benutzerdefinierten MSBuild-Ziel in der Veröffentlichungsprofildatei lösen
.pubxml
. Folgen Sie den unteren Schritten.Das Endergebnis ist, dass dieses MSBuild-Ziel alle
.xml
Dateien aus dem bin-Ordner der Web-API in den bin-Ordner kopiert, in dem Sie veröffentlichen. Sie müssen diese Dateien nicht kopierenApp_Data
.1) Öffnen Sie die entsprechende
.pubxml
Datei von[Project Folder]\Properties\PublishProfiles
.2) Fügen Sie dieses Snippet in das
<Project><PropertyGroup>
Tag ein:<CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn> <CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn>
3) Fügen Sie dieses Snippet nach dem
<PropertyGroup>
Tag hinzu:<Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="bin\*.xml" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>
Gutschrift geht auf diese Antwort, die sich mit dem Einbeziehen von Dateien von außerhalb des Projektverzeichnisses beim Veröffentlichen befasst.
quelle
Öffnen Sie Ihr Veröffentlichungsprofil (* .pubxml) und fügen Sie diesen Code in das Element "Projekt" ein:
<ItemGroup> <Content Include="bin\yourDocumentationFile.xml"> <CopyToOutputDirectory>true</CopyToOutputDirectory> </Content> <!-- Include a content to each documentation file --> </ItemGroup>
quelle
Eine Möglichkeit besteht darin, die XML-Dateien zu Ihrem Ordner " App_Data " innerhalb des Projekts hinzuzufügen und dann in Visual Studio eine Datei mit der Eigenschaft "In Ausgabeverzeichnis kopieren " in " Immer " auszuwählen .
quelle
Ergänzend zur vorherigen Antwort gibt es auch einen anderen Tag-Typ, den Sie einschließen können, wie im folgenden Artikel beschrieben:
https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files
Etikett:
<CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn>
quelle
Wenn Ihre Site ein Veröffentlichungsprofil verwendet (z. B. wenn Sie eines von Ihrem ISP heruntergeladen haben), müssen Sie sicherstellen, dass die folgende Option auf "Falsch" gesetzt ist
<ExcludeApp_Data>False</ExcludeApp_Data>
Die Eigenschaften der XML-Datei können wie folgt festgelegt werden: Aktion erstellen - Inhalt, In Ausgabeverzeichnis kopieren - Immer
Wenn der obige Parameter im Veröffentlichungsprofil jedoch auf "Wahr" gesetzt ist, wird Ihre XML-Datei niemals veröffentlicht. Das habe ich auf die harte Tour gelernt.
quelle
Wenn Sie die Dokumentationsdatei nicht möchten, gehen Sie zu HelpPageConfig.cs und Comment Out
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))
quelle