gpt4 book ai didi

c# - 在 SQL Server 数据库项目构建过程中使用了错误的编译器

转载 作者:行者123 更新时间:2023-11-30 14:08:51 24 4
gpt4 key购买 nike

我在使用 Visual Studio 2015 编译 SSDT SQL Server 数据库项目时遇到问题。我想在我的数据库项目中使用 C# 6 功能,但它似乎不受支持。例如,我在我的数据库项目中添加了下一个类:

namespace Database1
{
class ClassFile1
{
public string Str { get; } = string.Empty;
}
}

我试过编译这个,但是我得到了错误:

CS1519:类、结构或接口(interface)成员声明中的无效标记“=”

我发现此错误的原因是 VS 2015 使用的编译器版本错误。下一行编译由 VS 生成:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll" /debug+ /debug:full /optimize- /out:obj\Debug\Database2.dll /subsystemversion:6.00 /target:library /warnaserror- /utf8output ClassFile1.cs 

可以看到,使用的是C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe,是错误的。

我已经尝试从 VS 2015 的开发人员命令提示符编译数据库项目并且成功完成,因为在此提示符中 csc.exe 是 Roslyn 编译器 (C:\Program Files (x86)\MSBuild\14.0\Bin\csc. exe) 支持 C# 6 特性。你可以查看问题 How to run Roslyn instead csc.exe from command line?

我尝试使用 MSBuild 14.0 编译该项目,它也成功完成了。

问题是:如何更改/覆盖我的 VS 用于编译 SSDT DB 项目的编译器版本,从旧的 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe 到新的 Roslyn 编译器(C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe)?

最佳答案

我也在尝试这样做,但遇到了同样的问题。我的解决方法是创建一个单独的常规类库项目。我将 C# 代码从我的数据库项目移到了新库中(它将在 VS 2015 中使用 C# 6/Roslyn 进行编译)。然后从我的数据库项目中引用这个类库。

请记住设置类库引用的属性:Model Aware=true 和Generate Sql Script=true。我没有对此进行彻底测试,但我能够使用发布命令从我的数据库项目中部署它,并调用类库中的函数。

关于c# - 在 SQL Server 数据库项目构建过程中使用了错误的编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33011682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com