【发布时间】:2018-05-25 09:09:58
【问题描述】:
升级到 c# 7.2 后,我们的自动构建服务器出现编译错误。 “功能‘只读引用’在 c#7.0 中不可用。请使用语言 7.2 或更高版本。”
失败的项目在高级构建选项卡中设置为使用“最新的次要版本”,即 7.2。该项目在视觉工作室中构建并运行良好。命令行因该错误而失败。将构建设置显式设置为 7.2 而不是“最新的次要版本”也会失败。
为什么命令行无法加载最新的语言功能?并且在 VS IDE 下也能用?
命令行是 "devenv SolutionFile.sln /Build Release"
重现/演示它的示例应用程序是一个 WPF 应用程序,具有一个表单和一个按钮,以及一个用于传递结构的处理程序。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private struct Test123
{
public string test;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Test123 test;
test.test = "foo";
Test(test);
}
private void Test(in Test123 test)
{
// do nothing
}
}
更新: 此外,命令行中存在不匹配的版本。命令行打开并显示它在 v15.5.1 上。但是,devenv exe 提供了较早的版本。
【问题讨论】:
-
这几乎肯定是自动构建的问题,所以请添加一些关于如何设置构建服务器的详细信息..
-
您能否运行
where devenv以确保您的路径运行的是正确版本的VS? -
@DanLing 是的,我之前检查过(应该包括在内)。 Ide 快捷方式(适用于构建)和命令行都声称指向同一位置。在 MS Visual Studio 目录内@... Common7\IDE\devenv.exe 另外,我只安装了 VS 2017,不存在早期的主要版本。这个版本的 vs2017 也是从 MS 页面重新安装的。
-
嗯。发布版本也可以从 UI 中工作吗?
-
@DanLing 是的,发布和调试工作相同。 (我刚刚仔细检查了上面发布的代码示例应用程序)。