小编ine*_*ine的帖子

如何在 Visual Studio 中悬停时显示变量类型

我在 C# 中使用 Visual Studio 2017。当程序未运行时将鼠标悬停在变量上时,会出现一个弹出窗口,显示变量类型和名称。但是,当程序运行并遇到断点时,悬停仅显示名称和值,而不显示类型。我希望它在程序运行时也显示类型。

例如,假设我有以下代码:

var foo = 100;
Run Code Online (Sandbox Code Playgroud)

当程序停止并将鼠标悬停在变量上时foo,它会显示(local variable) int foo。但是,如果我在该行之后设置一个断点,运行该程序,然后在遇到断点后将鼠标悬停在该程序上,则会显示foo | 100. 有没有办法让它显示类似的东西int foo | 100

我尝试在线搜索并查看“工具”>“选项”>“调试”中提供的选项,但没有找到任何看起来像我想要的东西。

ide debugging visual-studio visual-studio-debugging

7
推荐指数
1
解决办法
6235
查看次数

我可以限制 C# 扩展方法对同一程序集中的类的可见性吗?

假设我有这些文件:

MyCode.cs

namespace MyCodeNamespace
{
  public class MyClass
  {
    //OMITTED
  }

  internal static class MyExtensions
  {
    internal static void Foo(this string str)
    {
      //OMITTED
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

其他代码.cs

using MyCodeNamespace;
namespace OtherCodeNamespace
{
  //OMITTED
}
Run Code Online (Sandbox Code Playgroud)

这两个文件是同一程序集的一部分。有什么方法可以使 Foo 可以访问 MyCode.cs 但不能访问 OtherCode.cs?我的问题与这个问题类似: C# ExtensionMethods onlyvisible andaccessible inside one class ("private") 但它接受的答案并不是我真正想要的。我想创建一个仅对我正在处理的代码可见的扩展方法,并且根据上述问题的答案,有人仍然可以通过添加“using”语句来访问它。有没有一种方法可以创建一个仅对我的代码可见的扩展方法,而在其他地方都看不到,甚至对同一程序集中的另一个类也不可见?

我问这个问题是因为调用扩展方法的语法很方便,并且对我正在处理的事情很有用(否则我只是创建一个私有方法),但我不希望其他人看到它并使用它他们的代码,以防它没有按照他们假设的那样进行。感谢 Visual Studio 的智能感知,我的扩展方法当前显示在可用方法列表中(以及添加它们所在命名空间的选项)。

.net c# extension-methods access-modifiers class-visibility

4
推荐指数
1
解决办法
3151
查看次数

如何在 Visual Studio 2017 (C#) 中抑制初始构建后事件错误?

我在 Visual Studio 2017 中有一个 C# 解决方案。我还有一个名为的批处理脚本foobar.bat,其中包含以下代码:

echo foobar : error 1: This is a test error.           
Run Code Online (Sandbox Code Playgroud)

我的目标是在构建特定项目时让上面的测试错误消息出现在 Visual Studio 的错误列表中,并在它出现时停止构建。所以我把[path to script]\foobar.bat项目的post-build事件命令行放进去,然后build。现在我在 Visual Studio 错误列表中收到两条错误消息:

  1. The command "[path to script]\foobar.bat" exited with code -1.
  2. This is a test error.

在这种情况下,查看仅打印出我的构建后事件内容的第一条错误消息并没有帮助。我想抑制这个初始错误,以便只有我的自定义错误消息显示在错误列表中(或者至少将其更改为更有用的内容)。

这是我尝试过的:

  • 添加2>nul到我的批处理脚本的末尾没有任何效果。
  • 添加1>nul到我的批处理脚本的末尾会抑制这两个错误,这不是我想要的。
  • 添加&set errorlevel=0到我的批处理脚本的末尾没有任何效果。
  • 将该行添加exit 0到我的批处理脚本的末尾没有任何效果。
  • 将以下内容添加到我的 .csproj 文件(根据本文)的末尾会抑制第一个错误,但使其不再失败:
<Target
    Name="PostBuildEvent"
    Condition="'$(PostBuildEvent)'!=''"
    DependsOnTargets="$(PostBuildEventDependsOn)">
    <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" /> …
Run Code Online (Sandbox Code Playgroud)

c# post-build-event visual-studio build-events visual-studio-2017

4
推荐指数
1
解决办法
1537
查看次数

`syntax: glob/regexp` 在 .gitignore 文件中是什么意思?

我在我团队的 .gitignore 文件中注意到以下几行,我不确定它们的意思:

...
syntax: regexp
...
syntax: glob
...
Run Code Online (Sandbox Code Playgroud)

我试过在线搜索,虽然我找到了很多关于 glob 语法和 regexp 语法的信息,但我没有找到任何可以解释syntax: glob.gitignore 文件中实际放置行等的含义。甚至gitignore 文档也没有提到它。

每一行后面跟着几行包含文件名、目录等。这些行是否告诉 git 在模式匹配时以下行使用什么语法?

git syntax gitignore

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