小编Lau*_*nce的帖子

VS 2010:需要项目只是作为MSBUILD脚本的触发器而不是编译成汇编

我有一个包含多个Web应用程序项目的解决方案.在构建完所有项目之后,我需要运行一个MSBUILD脚本.

我以前做的是从一个现有项目调用脚本(通过<Target Name="AfterBuild">.csproj文件).但是,我必须确保使用最后构建的项目,如果构建顺序发生变化,我会得到意想不到的结果.

因此,我决定创建一个空的Web应用程序项目,并设置项目依赖项,使其始终构建最后,然后将MSBUILD脚本附加到此.

所以现在它总是在正确的时间运行,但是由于所谓的空项目正在构建,我得到了一个额外的(微小的)程序集.项目中没有代码文件(AssemblyInfo.cs除外),但始终生成程序集.

那么,是否有一种方法可以阻止正在构建的程序集,或者可能是一种将MSBUILD脚本作为一个整体附加到解决方案并完全避免这个虚拟项目的方法?

msbuild visual-studio-2010 visual-studio

8
推荐指数
1
解决办法
1083
查看次数

如何为没有 SVC 文件的自托管 WCF 服务指定 ServiceHostFactory

我的应用程序作为 Windows 服务运行。它使用以下帮助器方法动态创建 WCF 服务:

    public static void StartWebService(string webServiceName, Type serviceContractType, Type serviceImplementationType)
    {
        if (string.IsNullOrEmpty(webServiceName)) return;

        var baseAddress = GetWebServiceAddress(webServiceName);
        var baseUri = new Uri(baseAddress);

        lock (RunningWebServices)
        {
            if (RunningWebServices.ContainsKey(webServiceName))
                return;

            var webServiceHost = new ServiceHost(serviceImplementationType, baseUri);

            var serviceBehaviour = new ServiceMetadataBehavior() { HttpGetEnabled = true };
            webServiceHost.Description.Behaviors.Add(serviceBehaviour);
            webServiceHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");

            var httpBinding = new BasicHttpBinding();
            webServiceHost.AddServiceEndpoint(serviceContractType, httpBinding, baseAddress);
            webServiceHost.Open();

            RunningWebServices.Add(webServiceName, webServiceHost);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这些服务没有 .SVC 文件。另请注意,这些是自托管服务,不在 IIS 下运行 - 它们在 WAS(Windows 激活服务)下运行。

现在我想控制实现类的实例化方式。听起来这可以通过 ServiceHostFactory 来完成。然而,我发现的所有有关此问题的文章都说指定使用哪个工厂的方法是将类型名称放在 …

c# wcf was self-hosting servicehost

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

如何以编程方式确定Windows服务器中启用的SSL/TLS协议

特定Windows服务器支持哪些SSL或TLS协议以及哪些已启用,都存储在注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Run Code Online (Sandbox Code Playgroud)

.NET是否包含枚举和检查这些协议的任何简单方法,因此在服务器上运行的应用程序可以确定哪些已启用?

我知道我可以查询注册表,但是存在以下问题:

  1. 在服务器重新启动之前,对这些注册表项的更改不会生效 - 我需要知道当前正在使用的协议
  2. 目前尚不清楚各种价值观有何影响.有一个DisabledByDefault值和一个Enabled值 - 大多数文章说0和1表示协议已启用,但1和1是什么意思?有些文章容易引起混淆,表明Enabled应该是0xffffffff而不是1.

c# ssl cryptography wcf-security tls1.2

5
推荐指数
0
解决办法
748
查看次数

Windbg和Stack Overflow异常 - 崩溃转储但Windbg输出无意义

我试图在实时ASP.NET 4.0站点上找到间歇性Stack Overflow异常的来源.我使用ADPlus(adplus_old.vbs,而不是新的adplus.exe)使用自定义配置捕获了一些故障转储,这些配置忽略了所有其他类型的异常(请参阅第1个答案:使用WinDbg和ADPlus帮助捕获StackOverflowException).

我在运行应用程序的同一台服务器上运行Windbg.该服务器基于Intel运行64位Win 2003.WinDbg版本为64位64位.我为程序集生成PDB文件,我怀疑异常来自并将它们放在站点的/ bin文件夹中(有几个程序集我没有PDB文件,但我认为它们不涉及此问题).我将环境变量_NT_SYMBOL_PATH指向/ bin文件夹.WinDbg将符号路径显示为:C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319; D:\ InetPub\LiveSites\MySite\bin

当我运行WinDbg时,打开崩溃转储后我运行.loadby sos clr然后!clrstack.输出非常小 - 当我在测试站点上设置故意的S/O时,我清楚地看到导致异常的方法.出了什么问题?

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [F:\ADPlus\Crash_Mode__Date_02-03-2012__Time_14-36-11PM\PID-9212__W3WP.EXE_-MySite-__1st_chance_StackOverflow__full_0140_2012-02-04_00-24-45-123_23fc.dmp]
User Mini Dump File with Full Memory: Only application data is available

Comment: '1st_chance_StackOverflow_exception_in_W3WP.EXE_-MySite-_running_on_MyServer'
Symbol search path is: C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;D:\InetPub\LiveSites\MySite\bin
Executable search path is: 
Windows Server 2003 Version 3790 (Service Pack 2) MP (8 procs) Free x64
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Machine Name:
Debug …
Run Code Online (Sandbox Code Playgroud)

asp.net stack-overflow windbg adplus

3
推荐指数
1
解决办法
3265
查看次数

LINQ查询:在运行时动态添加包含

我有一个方法GetOrder(int OrderID)运行LINQ查询并返回一个订单.有许多对象属性可以在查询中预加载(即使用Include()),例如DeliveryMethod,Customer,CustomerBillingAddress等.我希望该方法允许调用者通过方法的参数指定预加载哪些属性.毋庸置疑,我不想在方法中明确地写出每个可能的LINQ查询.

因此可以对主查询进行编码,然后动态添加.Includes,例如

if(PreLoadCustomer)
     query.Include("Customer")
Run Code Online (Sandbox Code Playgroud)

注意:我知道有延迟加载 - 这不起作用 - 相关对象需要立即可用.

谢谢

linq entity-framework

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

DocFx:如何抑制有关类型的某些信息(继承、构造函数、程序集等)

我正在使用 DocFx 生成有关 WCF Web 服务的文档。文档的目标受众是 Web 服务的客户。这些客户端显然不能直接访问 .NET 二进制文件。

公共接口和模型及其方法和属性的文档很重要,但还有很多其他信息与客户端无关:

  • 工具
  • 继承成员
  • 集会
  • 句法
  • 构造函数

明确地说 - 我不想过滤掉某些类型或成员(如这里所述) - 我想过滤掉所有类型的文档的整个部分。

docfx

3
推荐指数
1
解决办法
576
查看次数

如何强制类实现派生自特定基类/接口(而不是特定类型)的属性

在我的解决方案中,有许多类C1,等等C2C3它们都继承自一个公共抽象基类CB

还有许多类D1D2D3充当相应C类的数据源(例如, 的数据源C1是类型D1等的本地属性)。这些D类都继承自一个公共抽象基类DB,但其实现有所不同(该类使用继承和非继承的属性和方法C)。

现在,我想强加一条规则,即所有C类(即派生自CB必须实现“数据源”属性,并且该属性的类型必须派生自DB

我最初的想法是这样做:

public abstract class CB
{
    protected abstract DB DataSource { get; set; } 

    etc.
}
Run Code Online (Sandbox Code Playgroud)

然而,这意味着类DataSource中被重写的属性C只能是类型DB,而不是派生自 的类型DB

我如何实施我的规则?理想情况下CB, 和DB仍将保留抽象基类(因为每个类中都有非抽象属性和方法,我希望CD类继承),但如果需要,它们可以转换为接口。但我认为如果我这样做的话我会遇到完全相同的问题。

c# inheritance abstract-class base-class

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

需要泛型方法来返回类型T,除非T实现接口I,在这种情况下返回I

我有一个返回类型T的泛型方法.现在我想修改它,以便如果T碰巧实现接口I,则在对象上设置一个附加属性(即从I开始).

像这样的东西(但当然这不起作用):

    public T MyMethod<T>()
    {
        T resultAsT = some function ....

        var resultAsI = (resultAsT as I);

        if (resultAsI != null)
        {
            resultAsI.PropertyOnlyAvailableInI = 99;
            return resultAsI;
        }
        else
            return resultAsT;
    }
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

c# generics interface

0
推荐指数
1
解决办法
162
查看次数