小编Bra*_*ner的帖子

如何阻止Visual Studio 2015进行硬编码版本控制

我目前正在开发一个可执行的C++ VS2015项目.

我有一个文件version.h,它只是定义了一堆数字.

#define VERSION_MAJOR               3
#define VERSION_MINOR               0
#define VERSION_REVISION            0
#define VERSION_BUILD               2
#define VER_FILE_VERSION            VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
...
Run Code Online (Sandbox Code Playgroud)

version.h用于项目的.rc文件中,以定义可执行文件的版本信息.

.rc文件看起来像

#include "resource.h"
#include "version.h"
...
VS_VERSION_INFO VERSIONINFO
 FILEVERSION VER_FILE_VERSION
 ...
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,每次添加资源以修改resource.h时,Visual Studio 2015似乎都会删除.rc文件中的#include"version.h",而是硬编码"version"中的所有值. H".

示例.rc文件的问题

#include "resource.h"
...
VS_VERSION_INFO VERSIONINFO
 FILEVERSION 3,0,0,2
 ...
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何阻止VS2015这样做呢?

visual-studio visual-c++ visual-studio-2015

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

有没有办法在C#/ VB.NET中进行FAKE继承?

假设我想继承System.Data.SqlClient.SqlTransaction哪个是密封的.我希望只是放一个包装SqlTransaction,总是使用MyTransaction而不是SqlTransaction.是否有我可能会投的方式MyTransactionSqlTransaction使用隐式/加宽操作?

c# vb.net .net-2.0

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

委托签名不匹配时没有错误

我在代码中定义了以下类和委托(为简洁起见,还有许多其他行被删除).

Public Delegate Sub TimerCallback(canceled As Boolean)

Public Class Timer
    Implements TimerManager.ITimer

    Public Sub New(delay As Integer, callback As TimerCallback)
        mState = TimerState.Setup
        mCallback = callback
        CType(TimerManager.Instance, TimerManager.ITimerManager).RegisterTimer(Me, delay)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

当我使用以下代码创建一个新的计时器实例时,我不会得到编译错误,即使匿名函数的签名与委托的签名不匹配(它缺少"取消为布尔值"参数).

 Dim timer As New Timer(Me.CookTime, Sub()
                                         Dim cooked As FoodBase = CType(Activator.CreateInstance(SuccessfulResult), FoodBase)
                                         player.GetBackpack.AddItem(cooked)
                                     End Sub)
Run Code Online (Sandbox Code Playgroud)

我希望以这种方式实例化计时器时会出现编译错误,有人可以解释为什么编译时没有错误吗?我可以设置任何可能导致编译错误的选项吗?我在项目属性中有选项显式,选项严格打开和选项推断.事实上,忘记包含取消的参数太容易了.

.net vb.net anonymous-function visual-studio

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

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

完成"空"异步任务的不同方法

我正在使用同时具有同步方法和async版本Reconcile方法的库.

这些方法需要2个IEnumerables和3个代表,这些代理根据第一个列表中的值从第二个列表中调用添加,修改或删除的项目.

我的代码目前正在使用同步版本,我想将其转换为使用该async版本.

由于我实际上并不需要做任何工作,在委托删除,我传递(item) => {}deletedAction参数.

我发现了几个不同的版本,如何将其转换为散布在互联网上的"空"异步代理,以及StackOverflow,但我不确定它们之间的区别,或者哪种方式最正确.

发送"空"异步委托作为参数的这些方法之间的区别是什么,以及哪些是当前"最正确"的方式?有没有更好的方法让我错过了?

  1. async (item) => {await Task.CompletedTask;}
  2. async (item) => {await Task.FromResult(0);}
  3. async (item) => {await Task.Yield;}
  4. async (item) => {await Task.Delay(0);} (这个似乎是一个糟糕的选择,但我将它包括在内是为了完整性)

它们似乎都在工作,除了Task.CompletedTask,但这是因为我使用的框架是.Net Framework的4.5版本,并且在该版本中不存在.

c# async-await

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

部署Nuget包提供的EXE作为ClickOnce安装的组件

我有一个WPF应用程序,它利用Selenium自动化Internet Explorer实例.应用程序作为单击一次安装部署到用户.

它使用Selenium.WebDriver.IEDriver nuget包,它自动提供IEDriverServer.exebin目录.此exe不是项目中的条目,但作为构建过程的一部分自动复制到该项目中.

为了使我的应用程序在安装的计算机上运行,​​此exe需要包含在单击一次部署中.但是,即使选中"显示所有文件",它也未列在"发布"选项卡的"应用程序文件"列表中,其中配置了单击一次.

如果我手动IEDriverServer.exe从包中提取,并将其作为项目的内容添加,它将被列出,我可以包含它,但这会破坏与nuget包的连接.每当更新包时,我都必须手动提取和更新此文件.它也与自动构建不兼容.

如何在不破坏"正常"nuget更新过程的情况下,从bin目录中包含exe,并使其与自动构建(TFS构建代理)保持兼容?

.net c# clickonce selenium nuget

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

静态字段初始值设定项不在实例构造函数之前运行

我有以下课程:

\n\n
public class AssignmentStatusCode \n{\n\n    public static AssignmentStatusCode Pending { get; } = new AssignmentStatusCode("P");\n\n    public static AssignmentStatusCode Rejected { get; } = new AssignmentStatusCode("R");\n\n    public static AssignmentStatusCode Approved { get; } = new AssignmentStatusCode("A");\n\n\n    public static implicit operator string(AssignmentStatusCode assignmentStatusCode)\n    {\n        return assignmentStatusCode.Value;\n    }\n\n    private static readonly HashSet<string> ValidStatusCodes = new HashSet<string>(new[] { "A", "R", "P" });\n\n    public AssignmentStatusCode(string value)\n    {\n        if (!ValidStatusCodes.Contains(value))\n        {\n            throw new ArgumentOutOfRangeException(nameof(value),\n                                                  $"Value must be {string.Join(", ", ValidStatusCodes.Select(c => $"\'{c}\'"))}.");\n        }\n\n        Value = …
Run Code Online (Sandbox Code Playgroud)

c#

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

理解协同程序的执行

我在Unity工作,但这只是一个C#问题所以我希望这是发布这个问题的正确部分.无论如何,我仍然无法在脑中看到脚本的执行,特别是当有多个运行时它们都有不同的功能.

最近因为我将Update,FixedUpdate和Coroutine添加到我的"何时运行"列表中而变得更加复杂?更新和修复更新我得到了要点.

至于Coroutine,我基本上理解它是一种功能,可以让我更准确地控制时间.这是我知道我能做的唯一方法"收益返回新的WaitForSeconds(i);"

我的问题更多的是他们的执行顺序.例如,如果我从更新调用协程(每帧运行一次)并且协程有一个waitforseconds(10),那么将暂停执行所有脚本?是否有一个中央时钟运行一切?在等待结束之前,更新是否会再次运行?如果我有另一个脚本,其中包含一个包含不同协程的更新函数,并且两个协同程序同时运行,该怎么办?

也许我是模糊的.难以解释.我已经在网上阅读了一些关于协同程序的信息,但没有任何东西可以用我可以想象的方式来解释它.

c# unity-game-engine

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

不支持关键字:初始目录

我搜索网络和堆栈,找到一些主题,但没有一个解决问题和问题:我无法连接数据库与错误"关键字不支持:初始目录" 输入图像描述在这里我这么简单的代码!

在此输入图像描述

邪恶的错误 在此输入图像描述

c#

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

调整大小时 WPF 窗口闪烁

我有一个非常简单的窗口,使用以下 XAML 定义(当前视图模型中没有逻辑):

<Window x:Class="WpfViewer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:WpfViewer"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="525"
        Height="350"
        d:DataContext="{d:DesignInstance local:MainWindowVm}"
        mc:Ignorable="d">
    <Grid Margin="8">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="8" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="3"
                    Orientation="Horizontal" Margin="0,0,0,8">
            <TextBlock Text="Object" />
            <!--  breadcrumbs  -->
        </StackPanel>
        <Border Grid.Row="1"
                Grid.Column="0"
                BorderBrush="Black"
                BorderThickness="1" />
        <GridSplitter Grid.Row="1"
                      Grid.Column="1"
                      Width="8"
                      Background="{DynamicResource {x:Static SystemColors.WindowBrush}}"
                      ResizeBehavior="PreviousAndNext" />
        <Border Grid.Row="1"
                Grid.Column="2"
                BorderBrush="Black"
                BorderThickness="1" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

当用户调整窗口大小时,窗口的新区域会闪烁黑色。 在此输入图像描述

有什么办法可以防止这种闪烁吗?


我不认为这个现有问题是重复的。它涉及完全自定义的窗口,带有动画。

防止WPF窗口闪烁

c# wpf

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