小编Dre*_*kes的帖子

使用定义的自定义符号(例如:“DEBUG”)执行 Roslyn 条件编译

我正在使用 Roslyn 编译一个项目,代码类似于:

var workspace = MSBuildWorkspace.Create();
var project = await workspace.OpenProjectAsync("SomeProject.csproj");
var compilation = await project.GetCompilationAsync();
Run Code Online (Sandbox Code Playgroud)

我需要设置一个编译符号(例如DEBUGor TRACE,但在我的情况下是完全自定义的)。如何使用 API 执行此操作?

我看到它project有一个CompilationOptions属性,但我没有看到任何相关的内容。


编辑感谢@JoshVarty,他指出在编译之前添加这样的代码:

project = project
    .WithParseOptions(((CSharpParseOptions)project.ParseOptions)
    .WithPreprocessorSymbols("SOME_SYMBOL"));
Run Code Online (Sandbox Code Playgroud)

.net c# conditional-compilation roslyn

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

进行git克隆时,“过滤内容”是什么意思?

我克隆了一个git repo,发现状态行Filtering content非常慢。通常不会出现。它是什么?

remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 16592 (delta 6), reused 9 (delta 4), pack-reused 16562
Receiving objects: 100% (16592/16592), 14.14 MiB | 1.01 MiB/s, done.
Resolving deltas: 100% (7529/7529), done.
Checking out files: 100% (11475/11475), done.
Filtering content:   6% (115/1729), 390.32 MiB | 1.12 MiB/s
Run Code Online (Sandbox Code Playgroud)

git git-clone git-lfs

3
推荐指数
2
解决办法
1920
查看次数

在调试和发布配置之间指定单独的 .editorconfig 文件

我正在使用 VS 2019 16.8.3,我想在解决方案 .editorconfig 文件中指定一些代码分析规则 (dotnet_diagnostic.CAXXXX.severity),仅适用于发布版本。

当我在 .editorconfig 文件中添加规则时,调试构建时间会增加几分钟。所有分析器复选框均未在项目属性中选择为“在构建时运行”。

所以我想从代码分析中排除调试构建。是否可以仅为发布版本指定 .editorconfig 文件?

或者是否可以禁用此 .editconfig 进行构建并仅适用于手动代码分析?

msbuild visual-studio editorconfig visual-studio-2019

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

在C#中搜索数组中字符串的开头

我有一个包含很多路径的List.我有一个特定的路径,我想检查此列表,看看是否有任何路径使用此路径,即:

f.StartsWith(r.FILENAME) && f != r.FILENAME
Run Code Online (Sandbox Code Playgroud)

这样做的最快方法是什么?

编辑:完成以下答案的功能:

static bool ContainsFragment(string[] paths, string fragment)
{
    // paths **must** be pre-sorted via Array.Sort(paths);
    if (paths.Length == 0) return false;
    int index = Array.BinarySearch(paths, fragment);
    if (index >= 0 && index+1 < paths.Length)
    { //we found it 
        if (paths[index + 1].StartsWith(fragment) &&
            paths[index + 1].EndsWith(".manifest"))
        {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

.net c# arrays string

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

"do"中的"do.Run(form)"句子

有什么区别

do Application.Run(form)
Run Code Online (Sandbox Code Playgroud)

而且,简单地说:

Application.Run(form) ?
Run Code Online (Sandbox Code Playgroud)

do关键字在第一句中的作用是什么?

f#

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

为什么Flex编译器会在完全相同的源代码的连续编译中生成不同的文件大小?

我正在使用命令行编译器构建SWF mxmlc.exe.编译器将输出文件大小写为stdout的一部分.如果我连续多次运行编译器而不更改实际的源代码,我会看到文件大小一次上下跳动几个字节.

C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28443 bytes)

C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28442 bytes)

C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28440 bytes)

C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28442 bytes)
Run Code Online (Sandbox Code Playgroud)

我想不出为什么会出现这种情况.即使我每次都删除输出文件,重新生成的文件大小仍然以这种方式变化.

有什么想法吗?

apache-flex compiler-construction filesize actionscript-3

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

使用VADump跟踪内存使用情况 - OpenProcess失败c0000034

在阅读了最新一期MSDN杂志上一篇文章后,我想尝试使用VADump来分解我编写的一些应用程序的内存使用情况.

我电脑上唯一的可执行文件副本位于:

c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\winnt\vadump.exe

无论我给VADump提供什么参数组合,它都会返回错误:

OpenProcess Failed c0000034

谷歌搜索出现了一些其他人有同样问题,但这些帖子都没有我能找到的解决方案(甚至回复!).

本机运行的是安装了VS2005和VS2008的WinXP SP2.

VADump看起来是一个非常有用的工具,我真的很想尝试一下.希望这可以在办公室中的另一台PC上运行,但我仍然想让它在我的工作上运行.

有任何想法吗?

memory profiling memory-profiling

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

C#wpf问题自定义复选框

我刚开始深入研究C#和WPF设计,所以不介意我要求一些基础知识.

我正在尝试将我们的一个互联网应用程序移植到ac#应用程序并遇到一些困难.

我需要4个复选框,看起来像这样.如果单击它们,它们应该看起来像第二个.

http://frauneder.com/checkbox_example.jpg

我能够通过点击改变的图像来做到这一点,但在那里我想念缺血的财产.

第二个问题:我想使用键盘上的1-4键选中/取消选中复选框.我该怎么做呢?

Thanx非常提前!

c# wpf checkbox

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

你如何告诉C#编译器,当它们共享同一个名称时,它是一个类型而不是一个变量?

当你有一个名为与类型相同的局部变量时,有没有办法告诉编译器你给出的符号是一个类型还是一个变量?例如考虑(并忽略所有类型的返回错误):

public class sometype { public static sometype DoSomething() {} }

public string sometype { get { return sometype.DoSomething(); } } //A
public string sometype { get { return sometype.Trim(); } } //B
public sometype sometype { get { return sometype.DoSomething(); } } //C
public sometype sometype { get { return sometype.Trim(); } } //D
Run Code Online (Sandbox Code Playgroud)
  • A - >错误(没有方法DoSomething())
  • B - >作品
  • C - >作品
  • D - >错误(没有方法修剪())

从更具适用性的角度来看

(如果XSD让你烦恼,你可能想跳过这个):

我目前正在努力让LINQ到XSD工作.在我的XSD文件中有xs:这样的元素:

<xs:element name="car" type="car">
Run Code Online (Sandbox Code Playgroud)

'car'类型被定义为这样的simpleType
(可能还有一些限制,但这本质上是它):

<xs:simpleType name="car">
 <xs:restriction base="xs:string" /> …
Run Code Online (Sandbox Code Playgroud)

.net c# linq-to-xsd

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

从Asp.net MVC中的ActionMethod返回XML的首选方法是什么?

我正在显示异步加载数据的图表,因为搜索是获取数据的工作非常繁重.数据必须以XML格式返回,以使图表库满意.
我的ActionMethods返回一个ContentResult,其类型设置为text/xml.我使用Linq to XML构建我的Xml并调用ToString.这很好但是测试并不理想.
我有另一个想法来实现这一点,即返回一个使用XSLT View引擎构建我的XML的视图.

我很好奇,我总是试图以"正确的方式"做事.那你们怎么处理这样的场景呢?

您是否实现了不同的ViewEngine(如xslt)来构建XML,或者在控制器内部构建XML(或者为控制器提供服务)?

编辑:

由于我需要将数据传递给图表库,我必须遵循他们的xml结构.他们的符号不是我想要建立我的模型类的方式.这就是为什么我自己使用Linq to XML构建XML并想知道模板是否会更好.
简单的序列化不是我想要的

.net xml asp.net-mvc

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