我正在玩Roslyn的一些更改,但不幸的是,即使是未经修改的解决方案也会在我运行时崩溃VisualStudioSetup.Next,并且在尝试加载MS程序集时出错.所以我做了一些简单的更改,用新版本替换了我机器的现有二进制文件和配置文件.改变了C:/Program Files (x86)/MSBuild/bin and Windows/Microsoft.NET/Framework64.
替换CSC,VBCSCompiler,DLL和配置文件会导致csc.exe在任何构建上抛出错误.它抱怨清单指定了不同版本的CodeAnalysis.CSharpDLL.它没有为文件甚至名称提供路径.我用新版本替换了上述文件夹中的配置和DLL.我需要实际替换哪些文件才能正常工作?
我搜索了所有CSC实例的整个驱动器,并确保所有配置指定DLL的新版本,所以我不知道现在在哪里查看.
我知道可以将参数传递给MSBuild或者向csproj文件添加一个部分来指定编译器二进制文件的目录,但是我想获得胜利.
编辑:所以我决定只更改我的版本的版本号.通过VS中的程序集属性执行此操作会导致构建失败.我尝试使用MSBuild,但在每个项目中都出现此错误:
"F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj" (default target) (1) ->
F:\Git\Repos\roslyn\build\Targets\Versions.props(42,5):
error MSB4184: The expression ""1".Substring(3)" cannot be evaluated.
startIndex cannot be larger than length of string.
Parameter name: startIndex F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj]
Run Code Online (Sandbox Code Playgroud)
它尽管从VS建立起来很好.
MSBuild参数: /p:OfficialBuild=true /p:BuildNumber=1.3.1.60616 /p:Configuration=Release
我已经从SO中读过几个不同的问题,但仍然无法使其发挥作用.我正在使用public static string[] files = Directory.GetFiles(CurrentDirectory, "*.wav", SearchOption.AllDirectories);一个文件路径数组,然后将其传递给文件流.只有一个线程处理所有文件,文件流所做的操作耗时太长.所以我决定拆分数组并将那些较小的数组传递给不同的线程.
我使用的代码来自另一个SO问题,并用它来传递split数组,但它只能在第一个数组中只使用一个文件,但我知道问题是什么:
var thing = from index in Enumerable.Range(0, files.Length)
group files[index] by index/600;
foreach(var set in thing)
string.Join(";", set.ToArray());
Run Code Online (Sandbox Code Playgroud)
(这不完全是我使用它的方式,我已经把它弄得太乱了,我记不住了.)这个问题是所有东西都被视为一个巨大的文件路径,我有一个foreach循环,每个来自较小数组的文件,但它将其中的每个文件视为一个文件,当搜索返回多个文件时抛出filepathtoolong异常.我的函数接受一个数组然后foreach (string file in smallerArray)用来写入每个数组.我需要做的是将文件数组分成4个较小的数组并启动新的线程,new Thread(() => { DoWork(newArray); }).Start();但我尝试过的任何工作都没有.