javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

.NET 4.0在CI上构建问题

任何人都设法在CI服务器上编译.NET 4.0应用程序,而无需在CI服务器上安装Visual Studio 2010?

.NET 4.0不存在SDK。 在CI服务器上安装了.NET 4.0。 Msbuild.exe适用于简单项目并发出以下警告:

(GetReferenceAssemblyPaths目标) - > C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(847,9):警告MSB3644:找不到框架“.NETFramework,Version = v4.0”的引用程序集。 要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本。 请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集。 因此,您的程序集可能无法正确定位到您想要的框架。

trans by 2019-07-31T03:06:40Z

c# - 创建线程 - Task.Factory.StartNew vs new Thread()

我刚学习.Net 4中新的线程和并行库

在过去,我会像这样创建一个新线程(作为示例):

DataInThread = new Thread(new ThreadStart(ThreadProcedure));
DataInThread.IsBackground = true;
DataInThread.Start();

现在我能做到:

Task t = Task.Factory.StartNew(() =>
{
   ThreadProcedure();
});

有什么区别?

谢谢

trans by 2019-07-30T21:19:12Z

c# - 为什么我要创建一个名为“var”的类?

在C#中不是int的关键字? 但为什么我这样做:

public class var { }

public class main
{
    public static void main(string[] args)
    {
        var testVar = new var();
    }
}

代码中使用的int是在var类之前声明的true类。 编译器甚至没有抱怨。

当我这样做时:

public class int { }

或这个:

public class true { }

编译器说inttrue是一个关键字,不能这样使用。 为什么与var不一样?

trans by 2019-07-25T18:23:44Z

msbuild - VSTS 2010 SGEN:错误:无法加载文件或程序集(HRESULT异常:0x80131515)

我遇到了VS2010的一个奇怪问题。 我们使用TFS来构建我们的API dll,我们曾经在我们的项目中引用它们,使用一个完全可信的映射网络驱动器。 我们一直在这样工作至少两年,一切都很完美。

今天,我将一个webapp转换为vs2010,当我在Release中编译它时,它给了我:

SGEN:错误:无法加载文件或   程序集'[file:/// L:\ Api \ Release]   API_20100521.1 \ Release \ CS.API.Exceptions.dll'或其依赖项之一。手术   不受支持。 (例外   HRESULT:0x80131515)

奇怪的是,当它在Debug配置文件下时它正在工作......

我试过添加

<runtime>
   <loadFromRemoteSources enabled="true" />
</runtime>

进入app.config但仍然没有运气(参见[http://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0]和[http://msdn.microsoft.COM/ EN-US/库/ dd409252(VS.100)的.aspx)

我很确定这个问题来自visual studio或msbuild,因为我们的代码在prod时不会从网络共享运行,因为所有引用的dll都被复制到bin文件夹中。

如果有人有解决方案(或只是搜索路径的想法),请告诉我!

编辑:事实证明它在调试模式下工作,因为生成的序列化程序集已关闭。 正如标题所说,它确实是一个SGEN问题,因为正是这个实用程序说路径不可信...

trans by 2019-07-18T18:50:56Z

.net - C#运算符重载`+ =`?

我试图为+=做运算符重载,但我不能。 我只能为+创建一个运算符重载。

怎么会?

编辑

这不起作用的原因是我有一个Vector类(带有X和Y字段)。 请考虑以下示例。

vector1 += vector2;

如果我的运算符重载设置为:

public static Vector operator +(Vector left, Vector right)
{
    return new Vector(right.x + left.x, right.y + left.y);
}

然后结果将不会添加到vector1,而是vector1也将通过引用成为全新的Vector。

trans by 2019-07-18T02:52:40Z

.net 4.0 - HtmlString与MvcHtmlString

MvcHtmlString vs. HtmlString

这两者之间有什么区别,或者何时优先选择其中一种?

编辑:

喜欢MvcHtmlString而不是HtmlString的一件事是IsNullOrEmpty的扩展方法MvcHtmlString

trans by 2019-07-12T21:13:45Z

c# - 在.NET 4.0下使用SmtpClient,SendAsync和Dispose的最佳实践是什么

我对如何管理SmtpClient感到有点困惑,因为它是一次性的,特别是如果我使用SendAsync进行调用。 据推测,在SendAsync完成之前,我不应该调用Dispose。 但我应该打电话给它(例如,使用“使用”)。 该方案是一个WCF服务,它在发出呼叫时定期发送电子邮件。 大多数计算速度很快,但发送电子邮件可能需要一秒钟左右,因此Async会更好。

我每次发邮件时都应该创建一个新的SmtpClient吗? 我应该为整个WCF创建一个吗? 救命!

更新如果它有所不同,则始终为用户自定义每封电子邮件。 WCF托管在Azure上,Gmail用作邮件程序。

trans by 2019-07-12T08:38:38Z

为什么在VB.NET和C#中检查null值是否存在差异?

在VB.NET中会发生这种情况:

Dim x As System.Nullable(Of Decimal) = Nothing
Dim y As System.Nullable(Of Decimal) = Nothing

y = 5
If x <> y Then
    Console.WriteLine("true")
Else
    Console.WriteLine("false") '' <-- I got this. Why?
End If

但在C#中会发生这种情况:

decimal? x = default(decimal?);
decimal? y = default(decimal?);

y = 5;
if (x != y)
{
    Debug.WriteLine("true"); // <-- I got this -- I'm with you, C# :)
}
else
{
    Debug.WriteLine("false");
}

为什么会有区别?

trans by 2019-07-07T16:19:31Z

asp.net - 在iis 7.0上运行.net framework 4.0网站时出现问题

嘿,我在运行ISAPI网站CGI时遇到问题。我得到的错误是:

HTTP错误404.2 - 未找到&#34;由于Web服务器上的ISAPICGI限制列表设置,无法提供您请求的页面&#34;。

Module : IsapiModule , 
Notification : ExecuteRequestHandler, 
Handler : PageHandlerFactory-ISAPI-4.0_32bit , 
Error Code : 0x800704ec
trans by 2019-06-27T16:57:39Z

c# - log4net无法正常工作

嘿,我在web.config中有这个配置

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
        <param name="File" value="mylog.log" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="" />
            <param name="Footer" value="" />
            <param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
        </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
        <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="[Header]\r\n" />
            <param name="Footer" value="[Footer]\r\n" />
            <param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
        </layout>
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="LogFileAppender" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

但log4net无法正常工作。 我的项目编译得很好,我也没有调试错误。 我告诉log.debug("somemessage")的行运行正常,但我找不到mylog.log文件,那么它在哪里?

trans by 2019-06-26T23:02:37Z

C#使用System.Type作为Generic param

我有一个类型列表(System.Type),需要在数据库中查询。

对于每种类型,我需要调用以下extensionmethod(它是LinqToNhibernate的一部分):

Session.Linq<MyType>()

但是我没有MyType,但我想使用Type。

我有的是:

System.Type typeOne;

但我无法执行以下操作:

Session.Linq<typeOne>()

如何使用Type作为通用参数?

trans by 2019-06-21T01:16:25Z

c# - 无法安装Windows服务

我使用visual studio 2010和.N ET 4.0创建了一个非常简单的窗口服务。

除了添加了安装程序之外,此服务没有从默认的Windows服务项目添加任何功能。

如果我在我的开发箱或我们域中的其他Windows 2008 R2计算机上运行“installutil.exe appName.exe”,则Windows服务安装没有问题。

当我尝试在我们的客户站点上执行相同的操作时,它无法安装,并出现以下错误。

Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or assembly 'file:///C:\TestService\WindowsService1.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).

此解决方案只有一个项目,并且没有添加依赖项。

我在我们环境中的多台机器上尝试过,在客户中尝试过两台。 这些机器都是windows 2008 R2,都是全新安装。 一台机器只有.net 2.0和.net 4.0。 另一个.net 2,3,3.5和4。

我是每台机器上的本地管理员。

我也尝试了64位安装程序,但得到以下错误,所以我认为32位的是一个使用的。System.BadImageFormatException

任何指导将不胜感激。 谢谢。

trans by 2019-06-08T09:10:41Z

c# - String.Replace()与StringBuilder.Replace()

我有一个字符串,我需要用字典中的值替换标记。 它必须尽可能高效。 使用string.replace执行循环只会消耗内存(字符串是不可变的,请记住)。 StringBuilder.Replace()会更好,因为它是用于字符串操作的吗?

我希望避免花费RegEx,但如果这样做会更有效,那么就这样吧。

注意:我不关心代码复杂性,只关心它运行的速度和消耗的内存。

平均统计数据:长度为255-1024个字符,字典中为15-30个字符。

trans by 2019-06-04T01:41:59Z

.net 4.0 - 无法在WinDbg中加载SOS

背景:我是WinDbg的新手并试图让它第一次运行。 我想检查一下从Windows Server 2008(x86)上的IIS 7中运行的运行的ASP.NET 4站点获取的内存转储并下载到我的本地计算机。

我安装了调试工具并首次启动了WinDbg,打开了故障转储。 我去了File | 符号文件路径并将路径设置为“* srv * c:\ symbols * [http://msdl.microsoft.com/downloads/symbols*”]并等待加载所有符号。

在尝试加载SOS时,我遇到了问题。 首先,我尝试了以下命令......

.loadby sos mscorwks

...并收到回复“无法找到模块'mscorwks'”。

在搜索网页后,我尝试通过执行以下命令来加载mscorwks ...

sxe ld mscorwks.dll
g

...并收到响应“'g'中没有可运行的调试对象错误”

我将SOS.dll(从C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319)复制到WinDbg目录中,然后尝试...

.load sos

......并收到错误......

The call to LoadLibrary(sos) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

我不太清楚如何继续。 我只是想加载SOS并挖掘这个转储文件。 任何帮助将不胜感激。

Fyi ...我正在尝试使用64位版本的Windbg在64位版本的Windows 7上打开转储文件。

trans by 2019-06-01T17:50:18Z

序列化 - 如何在不违反继承安全规则的情况下在.NET 4+中实现ISerializable?

背景:Noda Time包含很多可序列化的结构。 虽然我不喜欢二进制序列化,但我们在1.x时间表中收到了许多支持它的请求。我们通过实现ISerializable接口来支持它。

我们收到了最近的一期野田的报道时间2.x在.NET内失败小提琴。 使用Noda的相同代码时间1.x工作正常。 抛出的异常是这样的:

覆盖成员时违反了继承安全规则:  “NodaTime.Duration.System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,  System.Runtime.Serialization.StreamingContext)”。 安全   覆盖方法的可访问性必须与安全性相匹配   被覆盖的方法的可访问性。

我把它缩小到了针对的框架:1.x目标.NET 3.5(客户端配置文件); 2.x的目标是.NET 4.5。 他们有支持PCL与.NET Core和项目文件结构,但看起来这是无关紧要的。

我已经设法在本地项目中重现了这一点,但我没有找到了解决方案。

在VS2017中重现的步骤:

  • 创建新的解决方案
  • 创建一个面向.NET的新经典Windows控制台应用程序4.5.1。 我称之为“CodeRunner”。
  • 在项目属性中,转到签名并使用签名程序集一把新钥匙。 取消密码要求,并使用任何密钥文件名。
  • 粘贴以下代码以替换ISerializable.这是一个此Microsoft代码的缩写版本样品。我保持所有路径都一样,所以如果你想回到原点更全面的代码,你不应该改变任何其他东西。

码:

using System;
using System.Security;
using System.Security.Permissions;

class Sandboxer : MarshalByRefObject  
{  
    static void Main()  
    {  
        var adSetup = new AppDomainSetup();  
        adSetup.ApplicationBase = System.IO.Path.GetFullPath(@"..\..\..\UntrustedCode\bin\Debug");  
        var permSet = new PermissionSet(PermissionState.None);  
        permSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));  
        var fullTrustAssembly = typeof(Sandboxer).Assembly.Evidence.GetHostEvidence<System.Security.Policy.StrongName>();  
        var newDomain = AppDomain.CreateDomain("Sandbox", null, adSetup, permSet, fullTrustAssembly);  
        var handle = Activator.CreateInstanceFrom(  
            newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,  
            typeof(Sandboxer).FullName  
            );  
        Sandboxer newDomainInstance = (Sandboxer) handle.Unwrap();  
        newDomainInstance.ExecuteUntrustedCode("UntrustedCode", "UntrustedCode.UntrustedClass", "IsFibonacci", new object[] { 45 });  
    }  

    public void ExecuteUntrustedCode(string assemblyName, string typeName, string entryPoint, Object[] parameters)  
    {  
        var target = System.Reflection.Assembly.Load(assemblyName).GetType(typeName).GetMethod(entryPoint);
        target.Invoke(null, parameters);
    }  
}
  • 创建另一个名为“UntrustedCode”的项目。 这应该是一个经典桌面类库项目。
  • 签署组件; 您可以使用新密钥或相同的密钥CodeRunner。 (这部分是为了模仿Noda Time的情况,部分是为了保持代码分析的快乐。)
  • 将以下代码粘贴到ISerializable(覆盖其中的内容):

码:

using System;
using System.Runtime.Serialization;
using System.Security;
using System.Security.Permissions;

// [assembly: AllowPartiallyTrustedCallers]

namespace UntrustedCode
{
    public class UntrustedClass
    {
        // Method named oddly (given the content) in order to allow MSDN
        // sample to run unchanged.
        public static bool IsFibonacci(int number)
        {
            Console.WriteLine(new CustomStruct());
            return true;
        }
    }

    [Serializable]
    public struct CustomStruct : ISerializable
    {
        private CustomStruct(SerializationInfo info, StreamingContext context) { }

        //[SecuritySafeCritical]
        //[SecurityCritical]
        //[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
        {
            throw new NotImplementedException();
        }
    }
}

运行CodeRunner项目会出现以下异常(为了便于阅读而重新格式化):

未处理的异常:System.Reflection.TargetInvocationException:
调用的目标抛出了异常。
---&GT;
System.TypeLoadException:
覆盖成员时违反了继承安全规则:
“UntrustedCode.CustomStruct.System.Runtime.Serialization.ISerializable.GetObjectData(...)。
重写方法的安全性可访问性必须与安全性相匹配
被覆盖的方法的可访问性。

注释掉的属性显示了我尝试过的内容:

  • ISerializable被两篇不同的MS文章推荐(第一篇,第二),虽然有趣的是,他们围绕显式/隐式接口实现做了不同的事情
  • ISerializable是Noda Time目前所拥有的,这是这个问题的答案所表明的
  • ISerializable是代码分析规则消息的一些建议
  • 没有任何属性,代码分析规则很高兴 - ISerializableUntrustedCode目前,规则告诉你删除属性 - 除非你有AllowPartiallyTrustedCallers.在任何一种情况下的建议都无济于事。
  • 野田时代已申请ISerializable; 无论是否应用了属性,此处的示例都不起作用。

如果我将UntrustedCode添加到UntrustedCode程序集(并取消注释AllowPartiallyTrustedCallers属性),代码运行时没有异常,但我认为这可能是一个很差的解决方案,可能会妨碍其他代码。

我完全承认在谈到这种情况时会非常失落.NET的安全方面。 那么我该怎么做才能针对.NET 4.5和但允许我的类型实现ISerializable仍然可以使用.NET Fiddle等环境?

(虽然我的目标是.NET 4.5,但我认为这是导致问题的.NET 4.0安全策略更改,因此标记。)

trans by 2019-05-30T18:36:29Z

.NET Framework 4中的每个程序员都应该知道的事情

我最近搬到了Visual Studio 2010并升级了我的网站以使用.NET Framework 4.(来自VS 2008 - Framework 3.5)

为了提高网站速度,可读性或内存使用,我需要了解哪些事项?

trans by 2019-05-28T12:48:13Z

c# - 如何通过LINQ压扁树?

所以我有简单的树:

class MyNode
{
 public MyNode Parent;
 public IEnumerable<MyNode> Elements;
 int group = 1;
}

我有一个IEnumerable<MyNode>.我想获得所有MyNode(包括内部节点对象(Elements))的列表作为一个单位列表Where group == 1。如何通过LINQ做这样的事情?

trans by 2019-05-27T21:11:21Z

c# - 在.net 4上使用async-await

我现在开始创建一个可以从C#5的async-await功能中获益的应用程序。 但我不确定使用哪个版本的VS和async运行时。

看看操作系统受欢迎程度图表,我需要再支持Windows XP三年左右。 看起来.net 4.5仅在较新版本的Windows上运行,因此我需要以.net 4.0为目标。 开发机器使用Windows 7,因此使用较新版本的VS不是问题。

现在我需要先选择一个编译器来执行此操作:

  • 带有AsyncCTP的VS2010
  • VS2012预览(最后一次到达),将目标设置为.net 4.0
  • Mono(看起来像2.12有async-await,我更喜欢/习惯使用VS而不是MonoDevelop作为IDE)

哪一个代码生成错误较少? 看看Jon Skeet的博客,VS2012 Preview使用的是永不代码生成器而不是CTP。

更重要的是使用哪个运行时?

VS2012是否包含可再发行的异步运行时与.net 4一起使用?

通过引用AsyncCTP运行时,我设法通过预览编译代码。 但由于CTP具有奇怪的许可条件,这看起来不是一个好的长期解决方案。

或者我应该使用第三方实施? 也许单声道有一个?

为了分发库,我更喜欢将dll放在与应用程序相同的目录中,而不是某种安装程序。

如果我的二进制文件在单声道+ Linux / MacOS上没有变化的情况下工作,我也会喜欢它。 因此运行时应该与内置的任何单声道(可能是2.12)兼容,或者允许在非Windows操作系统上使用。

trans by 2019-05-20T03:05:43Z

c# - 是否有基于任务的System.Threading.Timer替换?

我是.Net 4.0的任务的新手,我无法找到我认为可以替换或实现Timer的任务,例如 定期任务。 有这样的事吗?

更新我想出了我认为是我的需求的解决方案,即将“计时器”功能包装在具有子任务的任务中,所有这些都利用了CancellationToken并返回任务以便能够参与进一步的任务步骤。

public static Task StartPeriodicTask(Action action, int intervalInMilliseconds, int delayInMilliseconds, CancellationToken cancelToken)
{ 
    Action wrapperAction = () =>
    {
        if (cancelToken.IsCancellationRequested) { return; }

        action();
    };

    Action mainAction = () =>
    {
        TaskCreationOptions attachedToParent = TaskCreationOptions.AttachedToParent;

        if (cancelToken.IsCancellationRequested) { return; }

        if (delayInMilliseconds > 0)
            Thread.Sleep(delayInMilliseconds);

        while (true)
        {
            if (cancelToken.IsCancellationRequested) { break; }

            Task.Factory.StartNew(wrapperAction, cancelToken, attachedToParent, TaskScheduler.Current);

            if (cancelToken.IsCancellationRequested || intervalInMilliseconds == Timeout.Infinite) { break; }

            Thread.Sleep(intervalInMilliseconds);
        }
    };

    return Task.Factory.StartNew(mainAction, cancelToken);
}      
trans by 2019-05-19T10:24:51Z

.net - 混合模式程序集是根据运行时的版本“v2.0.50727”构建的

我收到以下异常:

混合模式程序集是针对运行时的版本“v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时加载。

因为我试图从我的WPF程序导出水晶报告......

我已经在app.config中添加了以下内容......

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
  <NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>

任何专家都可以帮忙????

参考我发现:[http://www.davidmoore.info/2010/12/17/running-net-2-runtime-applications-under-the-net-4-runtime]

trans by 2019-05-18T23:26:52Z

上一页 1 2 3 4 5 6 下一页 共6页