Come posso aggiungere un nuovo file a .csproj
dal prompt dei comandi?Come posso aggiungere un nuovo file al file .csproj senza Visual Studio
risposta
Scaricare il progetto facendo clic con il pulsante destro del mouse in Solution Explorer. Modifica il progetto facendo clic con il pulsante destro del mouse. Aggiungere f.ex:
<Compile Include="Properties\AssemblyInfo.cs" />
file Csproj possono essere utilizzati come input nello strumento da riga di comando MSBuild.
vedere il riferimento MSBuild:
e, per esempio, questa domanda.
MSBuild — Use the .csproj file or roll your own?
si può semplicemente utilizzare un editor di testo per modificarli e fare qualsiasi cosa MSBuild permette. Se si inseriscono azioni di compilazione personalizzate, Visual Studio potrebbe avvisare uno sviluppatore quando viene caricato il progetto che contiene azioni personalizzate, a seconda di ciò che si esegue.
Non penso che ci sia uno strumento che risponderà a un comando "aggiungi-progetto" sulla riga di comando per farlo, ma penso che potresti avere la fortuna di creare un programma/script per manipolare il contenuto XML di file csproj direttamente.
La struttura di un file csproj assomiglia a questo:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="...">
<PropertyGroup>
<!-- Properties which affect the build process -->
</PropertyGroup>
<ItemGroup>
<!-- Groups of items to process -->
</ItemGroup>
</Project>
Per aggiungere un file di codice C# per un progetto, è solo bisogno di aggiungere un elemento Compile
ad un elemento ItemGroup
:
<Compile Include="{relative path to file}" />
Se si utilizza un file di progetto esistente come modello, questo dovrebbe essere possibile con un XSLT molto semplice.
Ecco un modo semplice per farlo utilizzando Linq2Xml. Ho incluso un metodo basato su un singolo e un elenco. Oh, e come ha detto Casper: dovrai scaricare il progetto da VS prima che il tuo programma possa modificarlo. Quindi ricaricalo appena finito.
private static void AddFilesToUnitTestProject(FileInfo[] files, string measureBaseDirPath, string measureDataDirSuffix)
{
var unitTestProjectPath = measureBaseDirPath + _unitTestProjectFile;
var unitTestProjectFile = XDocument.Load(unitTestProjectPath);
var itemGroup = unitTestProjectFile.Nodes()
.OfType<XElement>()
.DescendantNodes()
.OfType<XElement>().First(xy => xy.Name.LocalName == "ItemGroup");
foreach (var fileInfo in files)
{
var xelem = AddProjectContent(measureDataDirSuffix + fileInfo.Name, unitTestProjectFile);
itemGroup.Add(xelem);
}
unitTestProjectFile.Save(unitTestProjectPath);
}
private static void AddFileToUnitTestProject(string pathToAdd, string measureBaseDirPath, string measureDataDir)
{
var unitTestProjectPath = measureBaseDirPath + _unitTestProjectFile;
var unitTestProjectFile = XDocument.Load(unitTestProjectPath);
var itemGroup =
unitTestProjectFile.Nodes()
.OfType<XElement>()
.DescendantNodes()
.OfType<XElement>().First(xy => xy.Name.LocalName == "ItemGroup");
var xelem = AddProjectContent(pathToAdd, unitTestProjectFile);
itemGroup.Add(xelem);
unitTestProjectFile.Save(unitTestProjectPath);
}
private static XElement AddProjectContent(string pathToAdd, XDocument doc)
{
XNamespace rootNamespace = doc.Root.Name.NamespaceName;
var xelem = new XElement(rootNamespace + "Content");
xelem.Add(new XAttribute("Include", pathToAdd));
xelem.Add(new XElement(rootNamespace + "CopyToOutputDirectory", "Always"));
return xelem;
}
- aggiornato con metodo AddProjectContent
Si prega di fornire il codice per AddProjectContent perché la risposta dovrebbe risolvere il mio problema .. –
Sicuramente nessun problema. Ecco qui: statico privato XElement AddProjectContent (string pathToAdd, XDocument doc) { XNamespace rootNamespace = doc.Root.Name.NameSpaceName; var xelem = new XElement (rootNamespace + "Content"); xelem.Add (nuovo XAttribute ("Include", pathToAdd)); xelem.Add (nuovo XElement (rootNamespace + "CopyToOutputDirectory", "Always")); return xelem; } –
- 1. Visual Studio continua ad aggiungere proprietà al mio csproj. Perché?
- 2. Visual Studio, svn e unione di file .csproj e .sln
- 3. Aggiungere il file C a Visual Studio
- 4. Come aggiungere un file .svc in Visual Studio
- 5. Visual Studio 2012 csproj è retrocompatibile con il 2010?
- 6. Posso aggiungere un nuovo certificato al keystore senza riavviare JVM?
- 7. Come posso aggiungere il mio file .sln al mio Jump List per Visual Studio (Windows 7)?
- 8. Impossibile aggiungere un nuovo file al repository in EGit
- 9. Come posso includere DLL nel mio file .csproj?
- 10. Genera file .webtest senza utilizzare Visual Studio
- 11. Nuovo file di C++ in Visual Studio Express 2015
- 12. Come faccio ad aggiungere automaticamente i file creati da gulp al mio progetto Visual Studio?
- 13. È possibile aggiungere commenti a un file csproj?
- 14. Come esportare e importare un file XSD in Visual Studio?
- 15. .csproj File - Aggiunta/eliminazione programmatica di file
- 16. Come aggiungere un nuovo schema al progetto di database Visual Studio esistente?
- 17. aggiunta più cartelle esistenti e più file esistenti al progetto Visual Studio in un unico passaggio
- 18. In cosa consiste "Service Include" in un file csproj?
- 19. Visual Studio: impossibile aggiungere al sito Web ... Impossibile aggiungere il file ... Accesso negato Errore 550
- 20. visual studio 2012 aggiungendo nuovo file di intestazione
- 21. Come posso aprire un progetto senza aprire la sua soluzione associata in Visual Studio?
- 22. visual studio add-in - aggiungi file al progetto
- 23. Aggiungere file xaml esistenti a Visual Studio 2012
- 24. Posso esadecimale modificare un file in Visual Studio?
- 25. Come posso aggiungere un riferimento in un tipo di progetto di sito Web di Visual Studio?
- 26. come aggiungere assembly DocumentFormat.OpenXml.Wordprocessin in visual studio
- 27. Come aggiungere plug-in al progetto Cordova di Visual Studio
- 28. Impossibile installare Visual Studio Express senza aggiungere SQL Server Express
- 29. Cos'è l'elemento <MvcProjectUpgradeChecked> nel file csproj
- 30. utilizzando AssemblySearchPaths nei file csproj
È possibile modificare il csproj con un editor di testo. –
E perché vorresti fare una cosa del genere? Qual è l'obiettivo? –
Questa è una domanda vera, non sono d'accordo sul fatto che avrebbe dovuto essere chiusa. –