小编sll*_*sll的帖子

MSBild错误MSB3086,与TeamCity

我正在尝试.NET 4使用MSBuildWeb Deploy 构建和部署项目,并且TeamCity我在本地开发机器上运行TeamCity实例时工作正常(最终),但是当我尝试使用相同设置设置新的TeamCity实例时得到以下错误:

\Microsoft.Common.targets(2249, 9): error MSB3086: Task could not find "sgen.exe" 
using the SdkToolsPath 
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\" or the 
registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".
Make sure the SdkToolsPath is set and the tool exists in the correct processor 
specific location under the SdkToolsPath and that the Microsoft Windows SDK 
is installed 
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows Server 2008,并安装了.NET 4,包括(我相信)MSBuild 4.我也安装了Windows SDK 7.1,因为其他线程建议这可能是问题,但仍然没有运气.任何想法或建议将不胜感激.

谢谢

.net msbuild teamcity windows-server-2008 microsoft-web-deploy

7
推荐指数
2
解决办法
8559
查看次数

从枚举中获取值到通用列表

我不知道如何将以下行从VB转换为C#:

Dim values As New List(Of T)(System.Enum.GetValues(GetType(T)))
Run Code Online (Sandbox Code Playgroud)

我的版本不起作用:

List<T> values = new List<T>(System.Enum.GetValues(typeof(T)));
Run Code Online (Sandbox Code Playgroud)

'System.Collections.Generic.List.List(System.Collections.Generic.IEnumerable)'的最佳重载方法匹配有一些无效的参数

构造函数参数不会这样 - 我丢失了什么演员(或其他)?

澄清:它包含在以下通用方法中

public static void BindToEnum<T>()
{
    List<T> values = new List<T>(System.Enum.GetValues(typeof(T)));
    //...
}
Run Code Online (Sandbox Code Playgroud)

c# vb.net generics

7
推荐指数
2
解决办法
9581
查看次数

重构方法的最佳实践

我想知道重构代码的最佳实践是什么样的:

应该在哪里设置退出标准,以及最佳做法是什么

    private static bool Foo()
    {
        bool result = false;

        if (DoMehod1())
        {
            if (DoMehod2())
            {
                if (DoMethod3())
                {
                    result = true;
                }
                else
                {
                    Console.WriteLine("DoMethod3 Failed");
                }
            }
            else
            {
                Console.WriteLine("DoMethod2 Failed");
            }
        }
        else
        {
            Console.WriteLine("DoMethod1 Failed");
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

.net c# refactoring

7
推荐指数
1
解决办法
1416
查看次数

在线程中的无限循环中,cpu使用率增加到100%

我在ASP.NET Web应用程序中实现了一个基于Web的聊天平台,我使用类似于长轮询的技术.我的意思是我将来自客户端的每个Web请求保留特定时间段(超时)或直到新消息到达,然后将响应发送到客户端.

我将连接的客户端保留在内存中(字典对象),当有新消息发送到客户端时,我将此消息写入接收方客户端的消息数组中.客户端需要发送请求以获取自己的消息,并将此请求保存在内存中的数组中.

我正在使用异步http处理程序来监听客户端请求,我将Web请求保存在内存中的数组中.我使用线程从内存中连续检查新消息(在为每个客户端创建的字典中).

我不使用.net线程池线程来检查新消息或超时web请求.我创建这样的线程:

System.Threading.Thread t = new Thread(new ThreadStart(QueueCometWaitRequest_WaitCallback));
t.IsBackground = false;
t.Start();
Run Code Online (Sandbox Code Playgroud)

在每个线程的QueueCometWaitRequest_WaitCallback方法中,我处于无限循环中:

while (true)
{
...
Thread.Sleep(100);
}
Run Code Online (Sandbox Code Playgroud)

在这个方法中,我正在检查Web请求超时或每个Web请求的新消息,它也保存在内存中的数组中.

一切都很好,直到我注意到CPU使用率达到了100%的时间.(在第一个连接的客户端之后的几分钟内)在第一个请求开始时,一切似乎都正常,我的意思是在向客户端返回响应时CPU使用率不高于10%.但即使有2个客户端,CPU使用率也会增加到100%.只有在写入客户端请求的响应时,CPU使用率似乎是100%.如果没有客户端,那么一切都恢复正常(CPU使用率约为0%),直到客户端完成新的Web请求.

我不太详细地知道线程,但我怀疑我创建并无限运行的新线程.这就像操作系统因为它们一直在工作而及时为它们提供更多的CPU使用和资源,并且这个Thread.Sleep(100)不起作用.

这是QueueCometWaitRequest_WaitCallback()方法:

void QueueCometWaitRequest_WaitCallback()
{
   while (true)
   {
      if (processRequest.Length == 0)
      {
          Thread.Sleep(100);
      }
      else
      {
          for (int i = 0; i < processRequest.Length; i++)
          {
               Thread.Sleep(100);

               // below I am checking for new message or request time out 
               .................
               .................

               // If new message or time out I write to response
          }
      }    
   } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net multithreading cpu-usage infinite-loop

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

为PerSession WCF服务调用两次的静态构造函数

不能udnerstand为什么PerSession/ WCF服务的类型构造函数调用两次.ConcurrencyModeMultiple.只需启动五个同时执行相同WCF服务方法调用的客户端,在日志中我看到static构造函数被调用两次,第一次和第二次使用另一个后第二次调用3秒ProcessId/ThreadId.在构造函数本身和WCF跟踪日志中都没有例外.每个日志的构造函数执行时间约为10毫秒.这导致所有静态字段不在假设的所有服务实例之间共享,并且在5个客户端连接的情况下,我有5个服务和两个不同的静态上下文,因此所有服务都没有反映onse静态字段的变化.

由于我依赖于在多个服务实例之间共享的一些静态缓存,因此这个问题混淆了许多事情.

服务托管在IIS.没有IIS重新启动,AppPool会在此时间间隔内重复使用.

[AspNetCompatibilityRequirements(RequirementsMode =
  AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(
  InstanceContextMode = InstanceContextMode.PerSession, 
  IncludeExceptionDetailInFaults = true, 
  ConcurrencyMode = ConcurrencyMode.Multiple)]
public class WcfService
{ 
    private static readonly ILog logger;
    private static volatile bool typeInitialized;

    static WcfService()
    {
        try
        {
            // Here is typeInitialized is false in both calls
            logger = LogManager.GetLogger("LogName");

            logger.InfoFormat("[PID:{0}] [THID:{1}] BEGIN Static constructor",
               Process.GetCurrentProcess().Id,
               Thread.CurrentThread.ManagedThreadId);
        }
        catch (Exception exception)
        {
           logger.Error("error on type construction stage", exception);
        }
        finally …
Run Code Online (Sandbox Code Playgroud)

c# silverlight wcf multithreading .net-4.0

7
推荐指数
1
解决办法
1582
查看次数

指定的Visual已经是另一个Visual的子项或CompositionTarget的根

WPF Visualizer Visual Tree画布

canvas.Children.Add poly |> ignore

指定的视觉是

  1. 已经是另一个视觉或
  2. CompositionTarget的根.

不要以为是1),不确定2)是什么?

使用Visual Studio 2010,F#2.0,WPF,...不是XAML

wpf xaml f# prism

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

如何获取NUnit的ExpectedException属性来检测异常的基类?

使用NUnit 2.5.10,我正在测试一些引用包含基本异常类型的库的代码.TIBCO.EMS.NamingException,具体而言TIBCO.EMS.InvalidNameException,从中派生出其他异常类型TIBCO.EMS.NameNotFoundException.

我想使用NUnit的ExpectedException属性来识别何时TIBCO.EMS.NamingException抛出任何从中派生的子类异常.

我可以很容易地检测到抛出特定异常的时间:

[ExpectedException("TIBCO.EMS.NameNotFoundException")]
       or 
[ExpectedException(Typeof(TIBCO.EMS.InvalidNameException))]
Run Code Online (Sandbox Code Playgroud)

但我想以某种方式使NUnit"期望"是否TIBCO.EMS.NamingException已抛出任何子类.

直接尝试它不起作用:

[ExpectedException("TIBCO.EMS.NamingException")]
    or
[ExpectedException(typeof(TIBCO.EMS.NamingException))]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

nunit unit-testing tibco-ems nunit-2.5

6
推荐指数
1
解决办法
1973
查看次数

功能超时用于大型列表(C#中的LINQ查询)

我使用以下查询

var queryList1Only = (from file in list1
                                  select file).Except(list2, myFileCompare);
Run Code Online (Sandbox Code Playgroud)

同时myFileCompare根据名称和长度比较2个文件.

如果list1和list2很小(在我测试时说100个文件),查询返回结果,然后我将list1增加到30,000个文件,list2增加到20,000个文件,查询现在说"Function Evaluation Timed Out".

我在网上搜索,发现调试可能会导致它,所以我删除了所有断点并运行代码,现在程序只是冻结,没有任何输出,queryList1Only我试图打印出来检查它.

编辑:这是myFileCompare的代码

class FileCompare : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo>
    {

        public FileCompare() { }

        public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
        {
            return (f1.Name == f2.Name && f1.Directory.Name == f2.Directory.Name && 
                    f1.Length == f2.Length);
        }

        // Return a hash that reflects the comparison criteria. According to the 
        // rules for IEqualityComparer<T>, if Equals is true, then the hash codes must
        // also …
Run Code Online (Sandbox Code Playgroud)

.net c# linq algorithm compare

6
推荐指数
1
解决办法
2506
查看次数

使用lambda为通用列表中的每个对象执行方法

我还是lambdas的新手并且发现很难找到它的特定功能,但是是否可以为通用列表中的每个对象执行一个方法?与ConvertAll的工作方式类似,但不是转换,而是实际调用方法.

public class Mouse()
{
    public void Squeak()
    {
    }
}

List<Mouse> mice = new List<Mouse>();

mice.Add(new Mouse());
mice.Add(new Mouse());
Run Code Online (Sandbox Code Playgroud)

你如何称呼每只鼠标的方法吱吱声?

mice.???(m => m.Squeak());
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

6
推荐指数
1
解决办法
2511
查看次数

如何通过单击没有任何代码隐藏的按钮将列表框中的项目添加到列表中?

我是MVVM的新手,也是WPF的新手.事实上,几个月前我开始编程.MVVM非常适合我的绑定概念,我已经尝试了几天,只是简单地创建一个允许您从listbx中选择项目的应用程序,当您单击添加按钮时,所选项目应该是保存在新列表中.第二个列表框显示添加的最新项目,您可以选择一个项目并使用另一个按钮将其删除.通常我会去点击事件并用很少的方法装饰我的代码隐藏,但我真的想通过使用绑定和没有代码隐藏来学习如何做到这一切.我会非常高兴得到任何帮助,请记住,我是新手,我真的希望尽可能简单:)与亲切的问候Daniela

<WrapPanel HorizontalAlignment="Center" Margin=" 10">
   <ListBox x:Name="Firstbox" 
            Width="100"
            ItemsSource="{Binding FoodList}"
            DisplayMemberPath="Name" >
   </ListBox>
   <Button Margin="10 >Select</Button>
   <ListBox Width="100"></ListBox>
Run Code Online (Sandbox Code Playgroud)

private List _foodList;

    public List<FoodItem> FoodList
    {
        get { return _foodList; }
        set { _foodList = value; }
    }

    private List<FoodItem> _newFoodList;

    public List<FoodItem> NewFoodList
    {
        get { return _newFoodList; }
        set { _newFoodList = value; }
    }

    public MainViewModel()
    {
        InitializeCommands();
        GetFood();
    }
    private void GetFood()
    {
        FoodList = new List<FoodItem>()
        {
            new FoodItem() {Name="Applepie"}, 
            new FoodItem() {Name="Scones"}
        };
    }
Run Code Online (Sandbox Code Playgroud)

wpf listbox mvvm

6
推荐指数
1
解决办法
3405
查看次数