| 

.NET C# Java Javascript Exception

0
Ich will da Dateien hinzufügen. Muss ich dann die Datei als XML einlesen und verarbeiten, oder gibt es da eine Möglichkeit über das Visual Studio API?
19.01.2011
3 Antworten
2
Ich vermute du programmierst ein Tool und willst damit vorhandene Solutions bearbeiten!? Wenn ja, musst du mittels XML darauf zugreifen. Die Solution-Datei ist aber die falsche Datei. Du musst die *.csproj verarbeiten, dort gibt es folgende Einträge <Compile .../>

Wenn du Probleme damit hast, erstell dir ein Beispielprojekt und schau was sich dort verändert, wenn du z.B. eine Datei hinzufügst.
19.01.2011
Konstantin 3,7k 7
Ja, genau das hab ich gemeint. Also keine APi-Calls in Visual Studio. Hm. Aber wie sieht das mit Makros in Visual Studio aus? Geht es damit?
Extrablatt 19.01.2011
Was hast du den genau vor? Also ob Makros in der *.csproj gespeichert werden, wage ich zu bezweifeln, den normalerweiße liegen diese in einem seperaten Visual Studio Ordner.

Wenn du uns mehr Details gibst, wäre das super :-)
Konstantin 19.01.2011
Makros werden nicht in der *.csproj gespeichert da diese Global für alle Projekte gelten und nicht an ein Projekt / Solution gebunden sind.
Floyd 19.01.2011
1
Rechte Maustaste auf das Projekt (nicht auf die Solution) im Projektmappen-Explorer-> "Hinzufügen"->"Vorhandenes Element hinzufügen". Datei auswählen und fertig.
19.01.2011
13thAngel 363 1 7
Mir stellt sich gerade die Frage, ob ich dein Problem richtig verstanden habe? Willst aus einer Anwendung zur Laufzeit eine andere/neue Datei hinzuladen?
13thAngel 19.01.2011
ja, genau. Ich meinte programmatisch. Das interaktive ist mir natürlich bekannt.
Extrablatt 19.01.2011
0
Die *.csproj-Datei ist eine XML-Datei und kann mit jedem XML-Editor oder mit der XDocument-Klasse aus dem System.XML-Namespace gelesen und bearbeitet werden.

Zum Beispiel kannst du alle Referenzierten Assemblys mit folgenden Code auslesen:

XNamespace msbuild = "http://schemas.microsoft.com/developer/msbuild/2003";
XDocument projDefinition = XDocument.Load(fullProjectPath);
IEnumerable<string> references = projDefinition
.Element(msbuild + "Project")
.Elements(msbuild + "ItemGroup")
.Elements(msbuild + "Reference")
.Select(refElem => refElem.Value);
foreach (string reference in references)
{
Console.WriteLine(reference);
}


Wenn du kein LINQ verwenden möchtest kannst du den folgenden XPath-Ausdruck verwenden um an die selbe Stelle zu kommen:

/Project/ItemGroup/Reference
19.01.2011
Floyd 11,0k 3 9
Floyd 11,0k 3 9

Stelle deine Visual-studio-Frage jetzt!