我如何添加一个新的文件到.csproj文件没有visual studio
本文关键字:文件 csproj studio visual 一个 何添加 添加 | 更新日期: 2023-09-27 17:54:08
如何从命令提示符向.csproj
添加新文件?
我不认为有任何工具可以响应命令行上的"add-project"命令来完成此操作,但我认为您可以幸运地创建一个程序/脚本来直接操作csproj文件的XML内容。
一个csproj文件的结构看起来像这样:
<?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>
要将c#代码文件添加到项目中,只需将Compile
元素添加到ItemGroup
元素:
<Compile Include="{relative path to file}" />
如果您使用一个现有的项目文件作为模板,那么使用一个非常简单的XSLT就可以实现。
使用Linq2Xml有一个简单的方法。我已经包括了一个单一的和一个基于列表的方法。哦,就像Casper说的:在你的程序可以编辑它之前,你需要从VS中卸载项目。完成后重新加载即可。
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;
}
- 使用AddProjectContent方法更新
。csproj文件可以用作MSBuild命令行工具的输入。
参见MSBuild参考:
MS Build Reference
例如,这个问题。
MSBuild -使用。csproj文件或滚动你自己的?
你可以简单地使用文本编辑器来编辑它们,并做任何MSBuild允许的事情。如果您插入自定义构建操作,Visual Studio可能会在加载项目时警告开发人员它包含自定义操作,具体取决于您的操作。
通过在解决方案资源管理器中右键单击它来卸载项目。通过右键单击编辑项目。添加f.ex:
<Compile Include="Properties'AssemblyInfo.cs" />