小编Lui*_*ipe的帖子

如何使用msbuild获取exec任务输出

我试图通过exec任务得到简单的输出msbuild:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" ItemName="Test1" />
    </Exec>
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" PropertyName="Test2" />
    </Exec>
    <Message Text="----------------------------------------"/>
    <Message Text="@(Test1)"/>
    <Message Text="----------------------------------------"/>
    <Message Text="$(Test2)"/>
    <Message Text="----------------------------------------"/>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

但得到下一个输出:

  echo test output
  test output
  echo test output
  test output
  ----------------------------------------
  ----------------------------------------
  ----------------------------------------
Run Code Online (Sandbox Code Playgroud)

如何通过我的脚本输出?

msbuild exec msbuild-task

76
推荐指数
3
解决办法
3万
查看次数

编译器不应该允许Guid == null

下面描述的行为仅适用于.net-3.5

我刚刚遇到了C#编译器中最令人惊讶的行为;

我有以下代码:

Guid g1 = Guid.Empty;
bool b1= (g1 == null);
Run Code Online (Sandbox Code Playgroud)

好吧,Guid不可为空,因此永远不能等于null.我在第2行进行的比较总是返回false.

如果对整数做同样的事情,编译器会发出警告,说结果总是为false:

int x=0;
bool b2= (x==null);
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么编译器允许你将Guid与null进行比较
据我所知,它已经知道结果总是错误的.
内置转换是否以编译器假定null为可能值的方式完成?
我在这里错过了什么吗?

.net c# guid .net-3.5

46
推荐指数
2
解决办法
1万
查看次数

我可以用派生类型覆盖吗?

据我所知,在C#2.0中无法执行以下操作

public class Father
{
    public virtual Father SomePropertyName
    {
        get
        {
            return this;
        }
    }
}

public class Child : Father
{
    public override Child SomePropertyName
    {
        get
        {
            return this;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过在派生类中将属性创建为"new"来解决问题,但当然这不是多态的.

public new Child SomePropertyName
Run Code Online (Sandbox Code Playgroud)

2.0中有什么解决方案吗?3.5中解决此问题的任何功能如何?

.net c# inheritance covariance

39
推荐指数
5
解决办法
3万
查看次数

如何使用Xpath检索XML文件中的命名空间

我有一个XML文件,如下所示:

<Elements name="Entities" xmlns="XS-GenerationToolElements">
Run Code Online (Sandbox Code Playgroud)

我将不得不打开很多这些文件.每个命名空间都有不同的命名空间,但一次只有一个命名空间(我永远不会在一个xml文件中找到两个命名空间).

使用XPath我想有一种自动方式将给定的命名空间添加到命名空间管理器.到目前为止,我只能通过解析xml文件来获取命名空间,但我有一个XPathNavigator实例,它应该有一个很好的,干净的方式来获取命名空间,对吧?

- 要么 -

鉴于我只有一个命名空间,以某种方式使XPath使用xml中唯一存在的命名空间,从而通过始终附加命名空间来避免混乱代码.

xml xpath namespaces

37
推荐指数
2
解决办法
5万
查看次数

Team Foundation Server(TFS)文件差异查看器 - 使用其他工具进行自定义

我正在使用Team Foundation Server(TFS)进行Visual Studio 2005.

每当我想比较两个文件的版本时,TFS会显示一个带有差异的窗口.

问题是它总是垂直分割.

事实上,几乎每次,我都希望水平分割. 我已经看过TFS选项并用谷歌搜索但我一无所获.我很震惊地认为没有这样的选择!

有没有办法配置TFS水平拆分?

diff merge tfs visual-studio

19
推荐指数
2
解决办法
1万
查看次数

C# - 从缓存中插入和删除

  1. 如果我通过赋值来插入Cache:

    Cache ["key"] = value;

    什么是到期时间?

  2. 从缓存中删除相同的值:

    我想检查值是否在Cache by中if(Cache["key"]!=null),是否最好将其从Cache中移除Cache.Remove("key")Cache["key"]=null

- 编辑 -

之后尝试过Cache.RemoveCache["key"]=null,请不要使用Cache["key"]=null,因为在紧张时会抛出异常.

c# asp.net caching

16
推荐指数
1
解决办法
2万
查看次数

引用类型存在于堆上,值类型存在于堆栈中

在阅读"C#in Depth"时,我正在阅读"引用类型存活在堆上,值类型存在于堆栈中"部分.

现在我能理解的是(主要用于ref类型):

class Program
{
    int a = 5;  // stored in heap

    public void Add(int x, int y) // x,y stored in stack
    {
        int c = x + y;  // c  stored in stack
    }
}
Run Code Online (Sandbox Code Playgroud)

只想澄清我的假设是否正确.谢谢.编辑:我应该使用差异变量,我认为它造成了混乱.所以我修改了代码.

编辑:是的,正如乔恩所说 - 这是一个神话,我应该提到这一点.我道歉.

c#

14
推荐指数
2
解决办法
9599
查看次数

给定2点我如何画一条直线与两点形成的直线?

理想我想提供一系列点,并在每个点(从第二点开始)以直角绘制一条线.

每条线的方向会交替出现,所以如果我碰巧绘制了一条由6个点组成的曲线,则从第二个点开始绘制每个点的给定长度线,即曲线交替边上的5个额外线,有点像毛毛虫交替腿.

(我知道线条不会与曲线完全成直角,而是与曲线上任意两点形成的直线成直角).

geometry

14
推荐指数
1
解决办法
1万
查看次数

在与前一个相同的线程中继续执行任务

我有一个WebService,它创建一个任务和一个延续任务.

在第一个任务中我们设置Thread.CurrentPrincipal

因此,当ContinuationTask启动时,它不再具有Thread.CurrentPrincipal.

我想在ContinuationTask中指定它应该在与其前提相同的线程中运行.

我搜索过网络,但我只发现线程要在SynchronizationContext中运行,因此我开始认为我缺少一些基本规则,特别是关于Thread.Principal应该如何工作.

c# impersonation task-parallel-library

14
推荐指数
3
解决办法
9182
查看次数

如何解决错误:可访问性不一致:通用c#接口的参数类型?

在将此代码写入我的项目时,我收到了错误

错误1可访问性不一致:字段类型'System.Collections.Generic.List<Jain_milan.Childrendata>'比字段更难访问'Jain_milan.addchild.m_children'
错误2可访问性不一致:参数类型'System.Collections.Generic.List<Jain_milan.Childrendata>'比方法更难访问'Jain_milan.addchild.addchild(System.Collections.Generic.List<Jain_milan.Childrendata>)'

namespace Jain_milan
{
        public partial class addchild : Form
        {
            List<Label> label = new List<Label>();
            List<TextBox> textbox = new List<TextBox>();
            List<ComboBox> combobox = new List<ComboBox>();
            List<DateTimePicker> datetimepicker = new List<DateTimePicker>();
            public List<Childrendata> m_children = new List<Childrendata>();
            public addchild(List<Childrendata> children)
            {
                InitializeComponent();
                this.m_children = children; //Initialize the same List as sent by Mainform
            }
Run Code Online (Sandbox Code Playgroud)

c#

13
推荐指数
2
解决办法
5万
查看次数