Tôi làm cách nào để thêm tệp mới vào .csproj
từ dấu nhắc lệnh?Làm cách nào để thêm tệp mới vào tệp .csproj mà không cần studio trực quan
Trả lời
Dỡ bỏ dự án bằng cách nhấp chuột phải vào dự án trong trình khám phá giải pháp. Chỉnh sửa dự án bằng cách nhấp chuột phải. Thêm f.ex:
<Compile Include="Properties\AssemblyInfo.cs" />
.csproj tệp có thể được sử dụng làm đầu vào vào công cụ dòng lệnh MSBuild.
Xem tài liệu tham khảo MSBuild:
Và ví dụ, câu hỏi này.
MSBuild — Use the .csproj file or roll your own?
Bạn chỉ có thể sử dụng một trình soạn thảo văn bản để chỉnh sửa chúng và làm bất cứ điều gì MSBuild cho phép. Nếu bạn chèn hành động xây dựng tùy chỉnh Visual Studio có thể cảnh báo một nhà phát triển khi dự án được tải rằng nó chứa hành động tùy chỉnh, tùy thuộc vào những gì bạn làm.
Tôi không nghĩ rằng có bất kỳ công cụ nào sẽ phản hồi lệnh "thêm dự án" trên dòng lệnh để thực hiện việc này, nhưng tôi nghĩ bạn có thể may mắn khi tạo một chương trình/tập lệnh để thao tác nội dung XML csproj tập tin trực tiếp.
Cấu trúc của một tập tin csproj trông như thế này:
<?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>
Để thêm một mã tập tin C# để một dự án, bạn chỉ cần thêm một yếu tố Compile
đến một yếu tố ItemGroup
:
<Compile Include="{relative path to file}" />
Nếu bạn sử dụng tệp dự án hiện có làm mẫu, điều này có thể thực hiện được bằng XSLT rất đơn giản.
Đây là cách dễ dàng để bạn có thể thực hiện việc này bằng cách sử dụng Linq2Xml. Tôi đã đưa vào một phương thức dựa trên danh sách và một danh sách. Oh, và giống như Casper nói: bạn sẽ cần phải dỡ bỏ dự án từ VS trước khi chương trình của bạn có thể chỉnh sửa nó. Sau đó, chỉ cần tải lại khi hoàn tất.
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;
}
- cập nhật với phương pháp AddProjectContent
Bạn có thể vui lòng cung cấp mã cho AddProjectContent không vì câu trả lời của bạn sẽ khắc phục được sự cố của tôi .. –
Chắc chắn không có vấn đề gì. Ở đây ya go: private static XElement AddProjectContent (chuỗi pathToAdd, XDocument doc) { XNamespace rootNamespace = doc.Root.Name.NamespaceName; var xelem = XElement mới (rootNamespace + "Nội dung"); xelem.Add (thuộc tính XAttribute mới ("Bao gồm", pathToAdd)); xelem.Add (mới XElement (rootNamespace + "CopyToOutputDirectory", "Always")); trả lại xelem; } –
- 1. studio trực quan thêm vào - thêm tệp vào dự án
- 2. Làm thế nào để biên dịch một tệp C mà không cần studio trực quan
- 3. Cách thêm liên kết vào một tệp trong studio trực quan bằng cách sử dụng EnvDTE
- 4. Làm cách nào để thêm tệp vào SVN mà không cần kiểm tra
- 5. Có thể thêm nhận xét vào tệp csproj không?
- 6. Tích hợp lực lượng với studio trực quan mà không cần tệp dự án được kiểm tra trong lực lượng
- 7. Làm cách nào để bạn thêm dự án mới vào tệp Visual Studio Solutions?
- 8. làm thế nào để bạn làm mới tài liệu tham khảo trong các ứng dụng ASP.NET mà không cần studio trực quan?
- 9. Làm cách nào để mở một dự án mà không cần mở giải pháp liên quan trong Visual Studio?
- 10. Làm cách nào để đọc tệp hình ảnh trực tiếp từ mã zip mà không cần giải nén vào đĩa?
- 11. Thêm hàng mới vào GridView mà không cần DataBind
- 12. Ngăn studio trực quan tạo tệp thông tin duyệt (.ncb)
- 13. Tại sao Visual Studio không thể mở tệp .csproj?
- 14. Cách thêm cột mới vào tệp CSV?
- 15. Làm cách nào để bao gồm các tệp DLL trong tệp .csproj của tôi?
- 16. Xóa tệp .pdb trong studio trực quan 2010
- 17. cách tốt nhất để thêm jquery vào một dự án web "trống" trong studio trực quan?
- 18. Cách đọc tệp trực tiếp từ tệp .zip mà không cần giải nén trong android
- 19. Tải xuống tệp OpenXML mà không cần tệp tạm thời
- 20. Gỡ lỗi tệp thi hành trong studio trực quan
- 21. Gỡ lỗi tệp xslt trong studio trực quan 2010
- 22. làm thế nào để thêm assembly DocumentFormat.OpenXml.Wordprocessin trong studio trực quan
- 23. Làm cách nào để phát trực tiếp tệp âm thanh (mp3, wav, v.v.) mà không có ứng dụng liên quan?
- 24. XDocument: lưu XML vào tệp mà không cần BOM
- 25. Cách thiết lập studio trực quan để tạo tệp CSHTML trong (Umbraco) Project
- 26. Làm cách nào để thêm jars vào classpath khi tôi gọi Jython * mà không cần thêm chúng vào $ CLASSPATH?
- 27. Thêm dòng mới vào tệp CSV
- 28. Làm thế nào để thêm maxItemsInObjectGraph lập trình mà không cần sử dụng tệp cấu hình?
- 29. Làm cách nào để thêm tệp và thư mục vào tệp zip mà không có thư mục gốc?
- 30. Visual Studio 2012 - Cách thêm liên kết tệp vào một tệp trong cùng một dự án
Bạn có thể chỉnh sửa csproj với một trình soạn thảo văn bản. –
Và tại sao bạn muốn làm một điều như vậy? Mục tiêu là gì? –
Đây là một câu hỏi thực sự, tôi không đồng ý rằng nó cần phải được đóng lại. –