框架 4.7.2 中使用的 C#8 功能不会导致 Visual Studio 中的构建错误,但会导致 TFS
C#8 feature used in framework 4.7.2 does NOT cause build error in Visual Studio, but does on TFS
我有一个用于 .NET Framework 4.7.2 的 C# class 库。我的一位开发人员添加了一个接口,并将一些成员标记为 public
,仅支持使用 C# 8。无论是他的计算机还是我的计算机,都没有给出任何关于此问题的错误或警告,这让它溜走了过去的代码审查。然而,我们的 TFS 服务器抛出了正确的错误。
接口:
public interface IHintManager
{
public void AddJoinHint(string leftTable, string rightTable, JoinHint hint);
public void AddQueryHint(QueryHint hint);
public void AddTableHint(string table, TableHint hint);
void InjectHints(DbContext context, DbCommand command, DbInterceptionContext interceptionContext);
}
.csproj 设置为 4.7.2:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
TFS 错误:
在本地构建输出:
为什么我们不会在本地看到此错误?我们需要更改哪些内容才能在本地开发人员和 TFS 之间获得一致的构建结果?
过去可能有人更改了项目设置(当时是 Visual Studio 2017 项目)以启用对早期语言版本(例如 C# 7)的支持。
检查 <LangVersion>latest</LangVersion>
或 <LangVersion>8.0</LangVersion>
的“.csproj”文件,如果找到则将其删除。
VS2019 使用 selected .Net 框架版本来确定支持的 C# 语言版本,除非它被上面覆盖。
对于 VS2017,您可以 select 通过项目设置使用最新的语言版本(无需编辑 .CSProj 文件),如果您这样做,升级到 VS2019 后将允许使用 C# 8...
由于这一系列事件,我们遇到了与您完全相同的问题。我们现在决定使用 <LangVersion>latest</LangVersion>
不再安全,因为在升级到 Visual Studio 的较新版本后,您最终可能会意外启用比预期更高版本的 C# 语言。
我有一个用于 .NET Framework 4.7.2 的 C# class 库。我的一位开发人员添加了一个接口,并将一些成员标记为 public
,仅支持使用 C# 8。无论是他的计算机还是我的计算机,都没有给出任何关于此问题的错误或警告,这让它溜走了过去的代码审查。然而,我们的 TFS 服务器抛出了正确的错误。
接口:
public interface IHintManager
{
public void AddJoinHint(string leftTable, string rightTable, JoinHint hint);
public void AddQueryHint(QueryHint hint);
public void AddTableHint(string table, TableHint hint);
void InjectHints(DbContext context, DbCommand command, DbInterceptionContext interceptionContext);
}
.csproj 设置为 4.7.2:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
TFS 错误:
在本地构建输出:
为什么我们不会在本地看到此错误?我们需要更改哪些内容才能在本地开发人员和 TFS 之间获得一致的构建结果?
过去可能有人更改了项目设置(当时是 Visual Studio 2017 项目)以启用对早期语言版本(例如 C# 7)的支持。
检查 <LangVersion>latest</LangVersion>
或 <LangVersion>8.0</LangVersion>
的“.csproj”文件,如果找到则将其删除。
VS2019 使用 selected .Net 框架版本来确定支持的 C# 语言版本,除非它被上面覆盖。
对于 VS2017,您可以 select 通过项目设置使用最新的语言版本(无需编辑 .CSProj 文件),如果您这样做,升级到 VS2019 后将允许使用 C# 8...
由于这一系列事件,我们遇到了与您完全相同的问题。我们现在决定使用 <LangVersion>latest</LangVersion>
不再安全,因为在升级到 Visual Studio 的较新版本后,您最终可能会意外启用比预期更高版本的 C# 语言。