![](/img/trans.png)
[英]Need to create fakes for a class that manipulates the results of interface in microsoft unit testing tool using c#
[英]I want to create a tool that manipulates C# project files
(基本上我们想在* .csproj文件中的某些地方导入目标文件,否则检查文件是否符合我们的标准)
这样做的最佳方式是什么? 我打算使用C#和XDocument(LINQ to XML)并操纵节点。 但这是最好的方法吗? 其他替代方案可能是:
也许真正的问题是:以编程方式阅读和操作XML的最佳方法是什么?
我个人只是直接使用LINQ to XML ...除非你正在进行非常繁重的处理,否则我认为不值得为它创建一个对象模型。 您需要多少规则/这个工具需要什么?
我们有一个内部工具,可以动态操作项目文件来更新引用并设置各种属性。 由于项目文件并不复杂,我们只需直接操作XML。 该工具早在LINQ可用之前编写,所以它没有使用它,但我认为没有理由你不能做Jon的建议。
当我们从VS2005升级到VS2008时,我们只需要对代码进行微调,但当然在这方面没有任何保证。 我们可能不得不对未来的版本做更大的调整。
如果你感兴趣的话,在我对这个问题的回答中我们的工具会有更多的信息应该.sln是否致力于源代码控制?
根据我们问题的第二部分,如何以编程方式操作XML,这里是项目配置文件中的一些xml。 (web.config中)
<system.web>
<compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral,
</compilation>
</compilation>
并使用LINQ-TO-XML进行解析,如下所示
XDocument assemblies = XDocument.Parse("web.config");
var projectAssemblies= from a in assemblies.Descendants("system.web\assemblies")
select new // What ever object you waant
{
Assembly = a.Attribute("assembly").Value.ToString(),
Version = a.Attribute("Version").Value.ToString(),
Culture = a.Element("Culture").Value.ToString(),
PublicKeyToken = a.Attribute("PublicKeyToken").Value.ToString()
};
foreach (var v in projectAssemblies)
{
// enjoy them
}
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.