小编Rod*_*Rod的帖子

如何设置条件编译变量?

在C/C++中,您可以在代码中定义宏,如下所示:

#define OLD_WAY  1
Run Code Online (Sandbox Code Playgroud)

虽然我从来没有这样做过,但我认为C#中可以使用同样的东西.更重要的是,在C/C++中,可以通过执行以下操作来执行某些条件编译逻辑:

#if OLD_WAY == 1
 int i = 0;
#else
 int i = 1;
#endif
Run Code Online (Sandbox Code Playgroud)

好的,所以这一切都很酷.而且,我认为这种逻辑在C#中是可能的.我想知道的是,我如何在项目级别定义常量,以便我可以输入逻辑,如果我定义常量的一个方法或另一个代码块,我将允许我条件编译一个代码块如果我不这样定义?我假设它已经在项目的属性中的某个地方完成,但我如何定义它?

c#

41
推荐指数
3
解决办法
6万
查看次数

获取"在您的工作区中找不到vspscc,或者您无权访问它"错误

今天,在尝试发布应用程序以便我可以对其进行测试时,我突然收到此错误消息:

该项目d:\ ScratchSrc\TryNewReportViewer2017\TryNewReportViewer2017\TryNewReportViewer2017.csproj.vspscc无法在工作区中找到,或者您没有权限访问它.

这对我来说是一个谜,因为我以前从来没有得过这个,我上周刚刚使用这个应用程序.也发布它.

我找了.vspscc文件.找到它应该说的确切位置.所以,替代方案是我没有权限.我不明白为什么我不应该拥有我创建的机器上的文件的权限,但无论如何.那么,我如何获得自己文件的权限?

我正在与VS 2017,TFS 2015本地合作.

tfs visual-studio

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

用户控件与自定义控件库的区别

我正在使用C#2008在WPF中创建日期/时间用户控件.我的第一个用户控件.我也在使用Matthew MacDonald的书"C#2008中的Pro WPF".在那本书中,他强烈建议使用WPF自定义控件库项目模板创建用户控件; 所以我听从了他的建议.我已经完成了编写代码,这些代码将被我认为是代码隐藏文件.现在我准备写XAML了.

唯一的问题是,我刚发现没有相应的.xaml文件?所以,我不明白为什么在编写用户控件时使用WPF自定义控件库项目更好,或者更喜欢?

c# wpf

18
推荐指数
1
解决办法
9014
查看次数

哪个版本的Crystal Reports使用13.0.2000?

我的任务是对几年前编写的ASP.NET Web Forms应用程序进行一些小的更改,其实现者不再与我们在一起并且在几年前就离开了.

此应用程序中有6个报告,所有报告都使用某些版本的Crystal Reports.当我查看Web.Config文件时,我看到"CrystalDecisions.Shared,Version = 13.0.2000.0"和"CrystalDecisions.CrystalReports.Engineer,Version = 13.0.2000.0"之类的内容.这是什么版本的水晶?如果是Visual Studio 2010的Crystal Reports,我可以将它安装到我的PC上以便与VS 2013一起使用吗?(我没有VS 2010,也没有访问它.)

asp.net crystal-reports

10
推荐指数
2
解决办法
4万
查看次数

将使用应用于SqlDataReader

我只想验证一些事情.我相信如果我将using命令应用于SqlDataReader,它将关闭数据读取器并处理它.例如:

Using sdr As SqlDataReader = cm.ExecuteReader()
   Dim someInt As Integer = sdr.GetInt32(0)
   'other details and actions
End Using
Run Code Online (Sandbox Code Playgroud)

是否会在退出Using代码块后关闭sdr SqlDataReader .(我相信它会,但只是想验证.)

vb.net using

6
推荐指数
2
解决办法
2862
查看次数

安装Productivity Power Tools后出错

我刚刚下载并安装了适用于Visual Studio 2010 的Productivity Power Tools.我从VS 2010中退出,然后重新进入,以便加载新的加载项.它回来的那一刻我开始收到很多错误信息.例如:

  • "'数据库专业人员的VSTS Sql Server数据层应用程序'包未正确加载."

  • "'RadLangSvc.Pac kage,RadLangSvc.VS,Version = 10.0.0.0,Culture = neutral,PublicKeyToken ='package无法正确加载."

  • "'语言包'包没有正确加载."

这只是我在安装此加载项后立即收到的一些错误消息.在所有情况下,在每条错误消息之后都有其他文本:

"问题可能是由配置更改或安装另一个扩展引起的." (这里有一点明显的评论.)

让其他人使用Productivity Power Tools加载项遇到此问题吗?解决这个问题的唯一方法就是卸载它吗?还是有另一种方法让它发挥作用?(这个加载项中有一些东西,我真的很想使用它.)

add-in visual-studio-2010

6
推荐指数
1
解决办法
4672
查看次数

不明白为什么会收到错误CS0234

我们正在使用Visual Studio 2015进行WPF项目。我们在项目中有一个名为Assets的文件夹。它在VS 2015中显示良好。其中的文件在解决方案资源管理器中显示良好。但是当我们构建它时,VS 2015会抱怨以下错误:

“错误CS0234类型或名称空间名称'Assets'在名称空间'CoreFramework'中不存在(您是否缺少程序集引用?)“

(CoreFramework是我们的解决方案和Assets所在项目的名称。)

我不知道CoreFramework中的文件夹如何,但是在构建它时,VS 2015只是看不到它。我曾尝试在VS 2015中清理项目和解决方案,但这完全没有帮助。同样的错误不断弹出。而且它们也会在我们的每晚建筑物中弹出。

那么,是什么原因导致VS 2015同时看到项目中的文件夹却看不到项目中的同一文件夹?

c# wpf

5
推荐指数
2
解决办法
2万
查看次数

在我想要等待的方法上获得a无法等待无效

我正在写一个WPF应用程序的团队.我们必须这样做,以便当用户隐藏/显示不同的列时,它将在其中一个视图的ReportViewer控件中反映出来.在测试中,我们发现将数据添加到ReportViewer的数据源需要很长时间; 有时大约几秒到一分钟.我想为用户太久了.所以我正在尝试使用C#的异步并等待.但是,当我将await应用于进程hog然后编译它时,我从C#编译器得到一个错误,"无法等待'void'".在这种情况下,我无法改变.NET框架返回的内容,它的空白.那么我该如何处理这种情况呢?这是代码:

private async Task GenerateReportAsync()
{
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    dt.Clear();
    int iCols = 0;
    //Get the column names
    if (Columns.Count == 0)     //Make sure it isn't populated twice
    {
        foreach (DataGridColumn col in dataGrid.Columns)
        {
            if (col.Visibility == Visibility.Visible)
            {
                Columns.Add(col.Header.ToString());     //Get the column heading
                iCols++;
            }
        }
    }
    //Create a DataTable from the rows
    var itemsSource = dataGrid.ItemsSource as IEnumerable<Grievance>;
    if (this.rptViewer != null)
    {
        rptViewer.Reset();
    }
    rptViewer.LocalReport.DataSources.Clear();
    if (m_rdl != …
Run Code Online (Sandbox Code Playgroud)

c# wpf asynchronous async-await

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

VS 2019和旧版本的TFS

Visual Studio 2019可以使用什么版本的TFS?在工作中,我们仍在使用TFS2015。我担心它可能太旧而无法与VS 2019一起使用。

tfs visual-studio-2019

5
推荐指数
1
解决办法
6105
查看次数

xUnit 测试在本地运行,但不使用 .NET 6 在 Azure DevOps 中运行

这个问题就像一年前发布的一个标题为“xUnit 测试在本地运行但不在 Azure DevOps 上运行”的问题。然而,它的不同足以保证一个单独的问题。我正在使用 .NET 6 开发一个 ASP.NET MVC 项目。我有一个 Azure CI 管道,它使用 DotNetCoreCLI@2,而不是管道中的 VSTest@2 任务,就像使用 Azure 管道时通常包含的那样ASP.NET 模板。运行管道时,我在日志中收到以下警告消息:

D:\a\1\s\PharmacyWarehouseV2\PharmacyWarehouseV2.Test\HomeControllerTest.cs(18,49):警告 CS8625:无法将 null 文字转换为不可为 null 的引用类型。

查看 xUnit 测试(只有一个),很容易明白为什么要这样做:

var controller = new HomeController(null);

当时我主要对让单元测试工作感兴趣。现在我认为它不起作用的原因是因为 C# 编译器发现 NULL 被传递到 HomeController 中,在 HomeController 中它将被分配给 ILogger。因此,我开始寻找更好的日志记录方式。我遇到了另一个参考资料,但我无法再次找到(不幸的是)它说 .NET 6 不再与 ILogger 一起使用。那么,现在使用 .NET 6 在 MVC 控制器和 xUnit 单元测试中处理日志记录的首选方法是什么?

这是我的 YAML 文件中的 DotNetCoreCLI@2 任务:

- task: DotNetCoreCLI@2
  displayName: 'Dot Net Core Test'
  inputs:
    command: 'test'
    projects: '**/*[Tt]est*/*.csproj'
    arguments: '--configuration $(BuildConfiguration)'
  enabled: …
Run Code Online (Sandbox Code Playgroud)

c# xunit azure-pipelines-build-task azure-pipelines

5
推荐指数
0
解决办法
1564
查看次数