小编Bri*_*din的帖子

为什么 Microsoft 分析器找不到 Microsoft.CodeAnalysis?

我正在尝试将Microsoft.CodeAnalysis.FXCopAnalyzers(最新稳定版本)添加到我的 ASP.NET 项目中。当我通过 NuGet 安装它时,我收到了大量错误,例如:

无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer 的实例:无法加载文件或程序集'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件..

注意:为了简洁起见,我省略了 127 个错误。它们都非常相似。但需要注意的一件事是,并非所有分析器都在 Microsoft.CodeQuality 命名空间中。有些在 Microsoft.NetCore 中,有些在 Microsoft.NetFramework 中。

所以我说好的,我必须先安装Microsoft.CodeAnalysis v2.6.0.0。看起来很奇怪,这不是 NuGet 自动安装的依赖项,但无论如何。

所以我恢复了我在 Git 中的所有更改,重新打开解决方案,安装 Microsoft.CodeAnalysis v2.6.0.0,然后安装 Microsoft.CodeAnalysis.FXCopAnalyzers 的最新稳定版本。

同样的错误!

当我查看包/Microsoft.CodeAnalysis.2.6.0 时,我注意到那里没有 .dll 。安装它的正确方法是什么?安装 Microsoft.CodeAnalysis 甚至是正确的解决方案吗?为什么安装时没有自动安装Microsoft.CodeAnalysis.FXCopAnalyzers的依赖?这不是包管理器的全部意义吗?我的问题太多,答案太少。请帮忙。

c# code-analysis fxcop analyzer microsoft.codeanalysis

9
推荐指数
2
解决办法
9862
查看次数

如何在Visual Studio生成的类图中显示(集合)关联?

在生成类图时,Visual Studio似乎没有正确识别c ++ STL类.

在生成的图表中右键单击类元素​​时有两个选项: - 显示为关联 - 显示为集合关联

我想用这两个,但我用std::shared_ptr,std::vector,std::map和这样的,它的Visual Studio将无法识别.

是否有一个我不知道的加载项或其他程序能够更好地将现有类转换为UML类图?

c++ stl class-diagram model-associations visual-studio-2012

7
推荐指数
0
解决办法
507
查看次数

为什么我的char*没有正确传递?

问题陈述(使用人为的例子):

按预期工作('b'打印到屏幕):

void Foo(const char* bar);

void main()
{
    const char bar[4] = "bar";
    Foo(bar);
}

void Foo(const char* bar)
{
    // Pointer to first text cell of video memory
    char* memory = (char*) 0xb8000;
    *memory = bar[0];
}
Run Code Online (Sandbox Code Playgroud)

不按预期工作(\0打印到屏幕):

void Foo(const char* bar);

void main()
{
    Foo("bar");
}

void Foo(const char* bar)
{
    // Pointer to first text cell of video memory
    char* memory = (char*) 0xb8000;
    *memory = bar[0];
}
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我const char*直接传递,它就不能正确传递.在const …

c

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

Win32 - 使用 MCISendString 进行 Midi 循环

我正在制作游戏,我正在使用 MIDI 文件作为背景音乐。这是我目前使用的代码:

void Game::play_music()
{
    // Start the music:
    if(map.levelnumber % 2 == 0)
    {
        mciSendString(L"open MUSIC01.MID type sequencer alias Music1", NULL, 0, NULL);
        mciSendString(L"play Music1", NULL, 0, NULL);
        playing = "Music1";
    } else {
        mciSendString(L"open MUSIC02.MID type sequencer alias Music2", NULL, 0, NULL);
        mciSendString(L"play Music2", NULL, 0, NULL);
        playing = "Music2";
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,除了它只播放一遍歌曲。我试图通过在 mci play 命令中添加“repeat”来循环播放,但它根本不播放任何内容。如何循环播放音乐?

c++ audio winapi

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

在什么情况下WPF将使键盘焦点回到主窗口?

在我正在处理的WPF应用程序中,有一个MenuItem包含两个项目的。当MenuItem被点击时,它需要键盘焦点并打开其子菜单。当MenuItem再次点击时,子菜单是封闭的,由于某种原因,主窗口需要键盘焦点。我需要MenuItem保持专注。

有人告诉我,在某些其他情况下,可以为主窗口提供键盘焦点-例如,如果控件具有键盘焦点,IsEnabledIsVisible变为false。在什么情况下会发生这种情况?我一直在疯狂地谷歌搜索,但是没有找到任何有关此的信息。

c# wpf focus

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

Win32 - 为什么没有任何东西被绘制到屏幕上?

我正在尝试使用屏幕外缓冲区,以便我可以跟踪 WM_PAINT 之前/之后对屏幕的更改,并且只需通过 WM_PAINT 中的一行复制它们。这是我必须设置图形的一些代码:

hdc = GetDC(hWnd);
hdcmem = CreateCompatibleDC(hdc);
hbcmem = CreateCompatibleDC(hdcmem);

// Load bitmaps
bg = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BACKGROUND));
side = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_SIDEINFO));
mainCont = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_GAME_CONT));
if(bg == NULL || side == NULL || mainCont == NULL)
            ThrowError("A bitmap failed to load.");

// Background
hdcold = (HBITMAP)SelectObject(hbcmem, bg);
BitBlt(hdcmem, 0, 0, 237, 196, hbcmem, 0, 0, SRCCOPY);
BitBlt(hdcmem, 237, 0, 237, 196, hbcmem, 0, 0, SRCCOPY);
BitBlt(hdcmem, 237 * 2, 0, 237, 196, hbcmem, 0, 0, SRCCOPY); …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

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

如何对现有颜色进行位图透明度?

我正在使用 Win32。我在这里发现,如果您使用:

BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCAND); // hdc has mask in it
BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCPAINT);`// hdc has regular image in it
Run Code Online (Sandbox Code Playgroud)

您可以创建位图透明度。我的问题是,这依赖于 hdc 在目标位置上已经是空的事实。我的不是,所以代码擦除(使黑色)现有图像的一部分。如何将透明位图复制到已绘制内容的区域?

我尝试将掩码和图像发送到 1000, 1000 - hdc 中没有绘制任何内容,然后在 BitBlt() 中使用 SRCCOPY 将结果从 hdc 复制到 hdc。但是要么没有在 1000、1000 处提取,要么没有正确复制回来。

c++ winapi transparency bitmap

3
推荐指数
1
解决办法
6948
查看次数

Win32 - 什么可能导致不正确的绘图?

我正在创建一个游戏,其中在WM_PAINT消息期间完成了大量绘图.窗口失效有几个不同的地方,迫使它重绘.我把所有东西画到了一个屏幕外的DC,然后把它绘制到窗口 - 创建非闪烁的"帧".

然而,每隔一段时间,一切都突然开始被错误地绘制.在我使用的五个位图中,前三个正在或多或少(但不完全)正确绘制.同样,所有颜色信息对于这三个都是正确的.在这三个之后绘制的另外两个是用错误的颜色绘制的 - 我认为白色仍然是白色的,但其他一切都被绘制为灰色.我不是说灰度,我的意思是除了白色之外的所有东西都是相同的颜色 - 灰色.

此外,当这种情况开始发生时,通常情况下所有内容都被绘制得太高 - 大约20到30个像素.此外,字体和消息框停止工作 - 所有文本都以默认字体绘制(但奇怪的是,正确的颜色),消息框只出现短暂,没有文字,然后消失 - 但必须像常规一样被解雇(你必须按回车键,否则如果你点击主窗口,它会按照正常情况进行操作,当有一个消息框打开时输入 - 闪烁并ping错误音.所以一切都被皇家搞砸了.

我一直在研究这个项目已经有一段时间了,我最近才开始看到这个错误 - 虽然我根本没有修改下面的代码片段.很难测试可能会做什么,因为它似乎偶尔会发生.

这是WndProc中WM_CREATE和WM_PAINT中的代码:

case WM_CREATE:
    {
        hdc = GetDC(hWnd);
        hdcmem = CreateCompatibleDC(hdc);
        RECT rc;
        GetClientRect(hWnd, &rc);
        hdcbm = CreateCompatibleBitmap(hdc, rc.right, rc.bottom);
        hbcmem = CreateCompatibleDC(hdcmem);
        hdcbmold = (HBITMAP)SelectObject(hdcmem, hdcbm);

        // Load bitmaps
        bg = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BACKGROUND));
        mainCont = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_GAME_CONT));
        if(bg == NULL || mainCont == NULL)
            ThrowError("A bitmap failed to load.");
    }
    break;
case WM_PAINT:
{
    PAINTSTRUCT ps;
    BeginPaint(hWnd, &ps);

    // Background …
Run Code Online (Sandbox Code Playgroud)

winapi drawing

3
推荐指数
1
解决办法
362
查看次数

为什么我不能隐式地将类转换为其通用基类?

public abstract class Base<T>
{
    protected abstract InnerFooBase<InnerBarBase<T>> GetInnerFoo();

    protected abstract class InnerFooBase<TFoo> where TFoo : InnerBarBase<T>
    {
    }

    protected abstract class InnerBarBase<TBar>
    {
    }
}

public class Implementation : Base<string>
{
    protected override InnerFooBase<InnerBarBase<string>> GetInnerFoo()
    {
        return new InnerFoo(); // Error
    }

    class InnerFoo : InnerFooBase<InnerBar>
    {
    }

    class InnerBar : InnerBarBase<string>
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

小提琴

第18行给出错误"无法将类型隐式转换Implementation.InnerFooBase<string>.InnerFooBase<Base<string>.InnerBarBase<string>>"

我可以通过具有修复错误InnerFoo从派生InnerBarBase<string>,而不是InnerBar,但我并不想这样做.我需要的代码执行beetween的关系InnerFooInnerBar.

InnerFoo源自InnerFooBase<InnerBar>,InnerBar …

c#

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

为什么我的覆盖方法没有被调用?

可能是一个简单的问题.我注意到了一些类似的问题,但它们似乎都没有解决我的问题,因此我的帖子.

Base.h:

class Base
{
public:
    Base();

protected:
    virtual void Create() {}
};
Run Code Online (Sandbox Code Playgroud)

Base.cpp:

Base::Base()
{
    Create();
}
Run Code Online (Sandbox Code Playgroud)

Child.h:

class Child : public Base
{
protected:
    void Create() override;
};
Run Code Online (Sandbox Code Playgroud)

Child.cpp:

void Child::Create()
{
    // Work happens here
}
Run Code Online (Sandbox Code Playgroud)

Create被调用Base而不是Child当我创建Child.为什么不Create打电话Child

c++ inheritance

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

映射到中间件类的路线?

看起来这应该是一个简单的问题,但我一直无法通过谷歌找到解决方案。

IHttpHandler在 ASP.NET Core 中,实现者被中间件类取代,这似乎是相当标准的。旧系统的一个优点是您可以设置一个 HTTP 处理程序来响应 web.config 中指定的路由。

因此,例如,如果我的IHttpHandler实现者名为FooHandler,则 web.config 将包含类似以下内容的内容:

<location path="foo">
    <system.webServer>
        <handlers>
            <add name="FooHandler" path="*" verb="*" type="FooCompany.FooProduct.FooHandler, FooCompany.FooProduct"/>
        </handlers>
    </system.webServer>
</location>
Run Code Online (Sandbox Code Playgroud)

ASP.NET Core 中是否有一对一的路由替代方案?我该怎么做呢?

编辑:新的中间件类可能看起来像:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;

namespace FooCompany.FooProduct.Middleware
{
    public class FooMiddleware
    {
        private readonly RequestDelegate _next;

        public FooMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task Invoke(HttpContext context)
        {
            context.Response.StatusCode = 200;
            await context.Response.WriteAsync("OK");

            await _next.Invoke(context);
        }
    }

    public static class FooMiddlewareExtensions
    { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-core

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

查找素数的程序意外停止

我写了一个非常简单的程序来查找由用户指定的特定范围内的素数.但我遇到了一个问题.当程序达到复合数时,程序只会停止打印出素数.我试着看看为什么它会停止,但我根本无法理解它有什么问题可能因为我是编程的新手.无论如何,这是代码.

#include <iostream>
using namespace std;
int main()
{
    int y;
    int range;
    cout << "Please enter the range. \n";
    cin >> range;
    for (y = 2; y <= range; y++)
    {
        int result;
        for (int x = 1; x < y - 1; x++)
        {
            int prime = y - x;
            if (y%prime != 0)
            {

            }
            else
            {
                result = 0;
            }
        }
        if (result != 0)
        {
            cout << y << " is a prime number. \n"; …
Run Code Online (Sandbox Code Playgroud)

c++ for-loop numbers

0
推荐指数
1
解决办法
113
查看次数