有没有更好的方法从C#/ .NET调用MSBuild而不是shelling到msbuild.exe?如果有,怎么样?
我正在尝试学习一些Linq to XML的东西,我在XElement中遇到了XPathSelectElement函数.这个功能似乎只是我需要的,但由于某种原因,我不能使用它!看看我的代码:
XElement rootElement = XElement.Load(dataFile);
XElement parentElement = rootElement.XPathSelectElement(xPath);
Run Code Online (Sandbox Code Playgroud)
我已经在所有需要的地方包含了对System.Xml.Linq的引用.我尝试过的那个库中的所有其他东西似乎都在工作,但XPathSelectElement甚至没有出现在visual studio的Intellisense中.
构建上面的代码时,我收到以下错误:
错误1'System.Xml.Linq.XElement'不包含'XPathSelectElement'的定义,并且没有可以找到接受类型'System.Xml.Linq.XElement'的第一个参数的扩展方法'XPathSelectElement'(你错过了吗? using指令或程序集引用?)C:\ PageHelpControl\PageHelp.cs 155 50 HelpControl
[ 当然,问题不仅限于特定的"朋友"实现,请尽可能指出相关的实施细节 ]
通过未解答的问题,我偶然发现了这个InternalsVisibleTo属性:
指定仅在当前程序集中通常可见的类型对另一个程序集可见.
MSDN上的C#编程指南有一个Friend Assemblies部分,描述了如何使用该属性允许将方法和类型用于另一个程序集.internal
我想知道使用它来创建一个"隐藏"界面来检测库以供单元测试组件使用是否是一个好主意.它似乎在两个方向上大量增加耦合(测试生产程序集中的代码,关于测试代码中生产程序集的内部知识),但另一方面,它可能有助于创建细粒度的测试而不会混乱公共接口.
您在测试时使用好友声明的经验是什么?它是你的银色子弹,还是它开始了死亡三月?
.net language-agnostic unit-testing internalsvisibleto friend
在一个事件中,我想把重点放在ListViewItem模板中的特定TextBox上.XAML看起来像这样:
<ListView x:Name="myList" ItemsSource="{Binding SomeList}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<!-- Focus this! -->
<TextBox x:Name="myBox"/>
Run Code Online (Sandbox Code Playgroud)
我在后面的代码中尝试了以下内容:
(myList.FindName("myBox") as TextBox).Focus();
Run Code Online (Sandbox Code Playgroud)
但我似乎误解了FindName()文档,因为它返回了null.
也ListView.Items没有帮助,因为(当然)包含我绑定的业务对象而没有ListViewItems.
也没有myList.ItemContainerGenerator.ContainerFromItem(item),也返回null.
我是NHibernate这个伟大世界的新手.我使用的是2.0.1.GA版.这是我的问题.我有一个Cars包含列Manufacturer(nvarchar(50))和主键的表ID(int).我的.NET类是:
public class Car
{
public virtual int ID { get; set; }
public virtual string Manufacturer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要检索梅赛德斯生产的所有汽车,我必须输入:
using (var session = OpenSession())
{
var cars = session
.CreateCriteria(typeof(Car))
.Add(Restrictions.Like("Manufacturer", "Mercedes"))
.List();
// ...
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢这样的事实,我需要将属性名称指定为字符串:(是否可能有更多的重构友好(这只是一个建议)?
var ms = session
.CreateCriteria<Car>()
.Add(c => c.Manufacturer, Restrictions.Like("Mercedes")
.List();
Run Code Online (Sandbox Code Playgroud)
在当前版本(2.0.1.GA)或未来版本中有什么类似的东西?
我用几个Grids来格式化多个GridViewColumn.CellTemplates:
<ListView SharedSizeScope="true">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition SharedSizeGroup="foo" />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
我试图将RowDefinitions(对于所有列都相同)提取到Style:
<Style TargetType="{x:Type Grid}">
<Setter Property="RowDefinitions">
<Setter.Value>
<RowDefinition SharedSizeGroup="foo" />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨:
错误:无法设置Property Setter'RowDefinitions',因为它没有可访问的set访问器.
这有点明显,但不是很有帮助.
我们即将开始一个项目并准备开发环境.我正在寻找使用github和Visual Studio 10的可能性.
那么github有一个Visual Studio Addin吗?
我最近在另一个关于C#运行时编译的网站上进行了简短的讨论,同时搜索了其他内容,并认为这个想法很有趣.你有没有用过这个?我试图确定如何/何时可以使用它以及它解决了什么问题.我会非常有兴趣听听你是如何使用它的,或者是在有意义的环境中.
非常感谢.
看System.Collections.Generic.Dictionary<TKey, TValue>,它清楚地实现ICollection<KeyValuePair<TKey, TValue>>,但没有所需的" void Add(KeyValuePair<TKey, TValue> item)"功能.
尝试初始化时也可以看到Dictionary这样:
private const Dictionary<string, int> PropertyIDs = new Dictionary<string, int>()
{
new KeyValuePair<string,int>("muh", 2)
};
Run Code Online (Sandbox Code Playgroud)
失败了
方法'Add'没有重载需要'1'参数
为什么会这样?
我对NUnit有一个问题 - 想知道是否有人有任何想法.
我们使用的是NUnit 2.5.3.9345和C#3.5.
请使用以下代码:
public class UnitTestBase
{
[TestFixtureSetUp]
public void SetUpTestFixture()
{
//Do something in base
}
}
[TestFixture]
public class SomeTestClass : UnitTestBase
{
[TestFixtureSetUp]
public void FixtureSetUp()
{
//Do something in test class
}
[Test]
public void SomeTest()
{
//Some assertion
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档,如果我运行SomeTestClass.SomeTest(),UnitTestBase.SetUpTestFixture()应该在之前调用SomeTestClass.FixtureSetUp().
情况并非如此 - 只有在我没有[TestFixtureSetUp]在派生类中提供方法时才会调用基本方法.
有什么想法吗?让我真的很困惑!
谢谢.
c# ×5
.net ×4
unit-testing ×2
wpf ×2
dictionary ×1
dll ×1
friend ×1
github ×1
grid ×1
interface ×1
internals ×1
lambda ×1
linq ×1
listview ×1
msbuild ×1
nhibernate ×1
nunit ×1
optimization ×1
styles ×1