it-swarm.com.de

asp.net webapi publish - XML-Dateien werden nicht kopiert

Ich habe MVC 4.0 WebApi-Projekt mit automatisch generierter Hilfe basierend auf dieser .

Meine Modellklassen werden bei einem anderen Projekt in meiner Lösung gespeichert. Die Generierung der XML-Datei ist für jedes Projekt aktiviert (Projekteigenschaften -> Erstellen -> OutPut -> XML-Dokumentationsdatei - Aktiviert).

Im lokalen Debug ist alles ok - XML-Dateien werden in das Projektverzeichnis kopiert und ich sehe Kommentare zu Feldern/Klassen aus anderen Projekten.

Wenn ich das Veröffentlichungsprofil (in Ordner) verwende, werden XML-Dateien nicht in den Ausgabeordner kopiert. Es wird nur eine XML-Datei aus dem Haupt-WebApi-Projekt kopiert. Ich sehe also keine Kommentare zu Klassen aus anderen Projekten.

59

Ich hatte ein ähnliches Problem, denn für mich war die Antwort ein bisschen "Doh!" Moment.

In den Projekteinstellungen hatte ich nur die XML-Dokumentationsdatei unter der Debug-Konfiguration und nicht unter Release aktiviert. Ich wurde mit Release bereitgestellt, und daher wurde die XML-Dokumentation nicht wirklich generiert. Das Update bestand also darin, die XML-Dokumentation für Debug- und Release-Konfigurationen zu aktivieren.

151
grimus

Sie können es auf zwei verschiedene Arten tun:

1) Gehen Sie zu Ihrer Projekteigenschaft -> Build-Option auswählen -> "XML-Dokumentationsdatei" prüfen -> Pfad hinzufügen "App_data\XMLDocument.xml" -> Einstellung speichern, Projekt erstellen -> Include Ihre XMLDocument.xml-Datei -> Eigenschaft auswählen -> In Ausgabeverzeichnis kopieren -> "Immer kopieren" auswählen

2) Gehen Sie zu Ihrer Projekteigenschaft -> wählen Sie die Option "Web paketieren/veröffentlichen" -> Elemente zur Anzeige -> Wählen Sie "Alle Dateien in diesem Projekt" aus dem Dropdown-Menü aus

41

Ich konnte dieses Problem mithilfe eines benutzerdefinierten MSBuild-Ziels in der .pubxml-Datei des Veröffentlichungsprofils lösen. Folgen Sie den unteren Schritten. Dieses MSBuild-Ziel kopiert alle XML-Dateien aus dem Bin-Ordner der Web-API in den Bin-Ordner, in dem Sie veröffentlichen. Diese Dateien müssen nicht nach App_Data kopiert werden.

1) Öffnen Sie die entsprechende .pubxml-Datei unter [Projektordner]\Properties\PublishProfiles.

2) Fügen Sie dieses Snippet im Tag <Project><PropertyGroup> hinzu:

<CopyAllFilesToSingleFolderForPackageDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

3) Fügen Sie dieses Snippet nach dem Tag <PropertyGroup> hinzu:

  <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="bin\*.xml" />

      <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>

Die Gutschrift geht an diese Antwort , die darauf abzielte, beim Veröffentlichen Dateien außerhalb des Projektverzeichnisses einzuschließen.

22
Keith

Ich hatte das gleiche Problem, dass nur die XML-Datei aus dem Webapi-Projekt bereitgestellt wurde.

Um das Problem zu beheben, musste ich dies zu meiner Web (Api) -Projektdatei im ersten PropertyGroup-Element hinzufügen.

<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>

Danach wurde die Dokumentation xml-Dateien aller Projekte (sofern aktiviert) veröffentlicht !

7
martinoss

Ergänzend zur vorherigen Antwort gibt es im folgenden Artikel auch einen anderen Typ von Tags:

https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files

Etikett:

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
  CustomCollectFiles;
  $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
6
Ivan

Eine Möglichkeit ist das Hinzufügen der XML-Dateien zu Ihrem Ordner "App_Data" im Projekt. Wählen Sie dann in Visual Studio eine Datei in der Eigenschaft "Copy to Ouput Directory" bis "Always ".enter image description here

6
Toan Nguyen

Öffnen Sie Ihr Publikationsprofil (* .pubxml) und fügen Sie diesen Code in das Element "Project" ein:

<ItemGroup>
    <Content Include="bin\yourDocumentationFile.xml">
        <CopyToOutputDirectory>true</CopyToOutputDirectory>
    </Content>
    <!-- Include a content to each documentation file -->
</ItemGroup>
4

Wenn Sie die Dokumentationsdatei nicht möchten, gehen Sie zu HelpPageConfig.cs und kommentieren Sie aus

config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))

0
Ryan Dooley

Wenn Ihre Site ein Veröffentlichungsprofil verwendet (wenn Sie beispielsweise eines von Ihrem Internetdienstanbieter heruntergeladen haben), müssen Sie sicherstellen, dass die folgende Option auf False gesetzt ist

<ExcludeApp_Data>False</ExcludeApp_Data>

Die Eigenschaften der XML-Datei können wie folgt festgelegt werden: Build-Aktion - Inhalt, In Ausgabeverzeichnis kopieren - Immer

Wenn der obige Parameter jedoch im Veröffentlichungsprofil auf "True" gesetzt ist, wird Ihre XML-Datei niemals veröffentlicht. Ich habe es auf die harte Tour gelernt.

0
Scott