小编mar*_*ark的帖子

如何两次调用相同的msbuild目标?

我有以下msbuild脚本:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         DefaultTargets="All">

  <PropertyGroup>
  ...
  </PropertyGroup>

  <UsingTask AssemblyFile="$(GallioTaskPath)" TaskName="Gallio.MSBuildTasks.Gallio" />
  <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />

  <ItemGroup>
  ...
  </ItemGroup>

  <Target Name="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
  ...
  </Target>

  <Target Name="RunServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
  ...
  </Target>

  <Target Name="KillServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
          Condition="'$(NoServerHosts)' != True">
    ...
  </Target>

  <Target Name="KillServerHosts2"
          Condition="'$(NoServerHosts)' != True">
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="KillServerHosts" Properties="Configuration=$(Configuration)" />
  </Target>

  <Target Name="All" DependsOnTargets="Build;RunServerHosts;Test;KillServerHosts2">
    <OnError ExecuteTargets="KillServerHosts2" />
  </Target>

  <Target Name="Test">
    ...
    <Error Text="Tests execution failed with exit code $(ExitCode)" Condition="'$(ExitCode)' != 0" />
  </Target>

  <Target Name="CheckSolutionsItemGroup">
  ... …
Run Code Online (Sandbox Code Playgroud)

msbuild target targets

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

是否可以使用.net中的控制台用户界面?

我想知道是否有.NET中的库可以轻松编写控制台用户界面.例如,想象一下WinForms应用程序,用户可以在其中:

  • 浏览菜单
  • 回应对话框

并且应用程序返回显示几行文本.

可以看出,这种应用程序中的GUI可以毫无问题地映射到相应的CUI.

那么,如果必须坚持使用控制台,那么是否有任何.NET工具可以轻松编写这样的CUI?

EDIT1

让我定义一个约束,这应该有助于人们掌握CUI的想法.想象一台机器,您可以打开远程控制台,但不能打开RDS.因此,在该计算机上远程运行GUI应用程序是不可能的,因为它将无法打开任何窗口.但是,可以有一个远程控制台,让我们有两种可能的CUI风格:

  • 基于字符的图形,如旧超市终端
  • 完全基于文本.

第一个选项允许将字符放在控制台窗口的任意位置.ncurses是*nix系统的低级库,允许执行此类操作.以这种方式创建的CUI可以非常有表现力和方便,但是为了我们的讨论,我也可以将此选项排除在外,因为远程控制台不太可能支持在控制台窗口中移动的能力.

因此,这给我们留下了基于文本的CUI,即通过printf和仅扫描(以及喜欢)创建的CUI .

EDIT2

另一个澄清:我在问题中提到了Windows Forms作为简单用户界面的一个例子,它没有什么特别的东西无法转换为基于文本的控制台UI.这只是为了说明菜单和模态对话等简单的GUI元素可以在控制台中建模而不需要求助于窗口.

.net windows console console-application

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

如何在模板中表示字符串文字,参数化为用于表示文字的字符类型?

考虑以下简单的地图:

class MyCoolMap : public unordered_map<const char *, const char *>
{
public:
  ProtoTypeMap()
  {
    insert(value_type("in1", "out1"));
    insert(value_type("in2", "out2"));
    ...
    insert(value_type("inN", "outN"));
  }
};
Run Code Online (Sandbox Code Playgroud)

现在,假设我需要使这个地图可用于charwchar_t字符串.所以,我重写如下:

template<class C>
class MyCoolMap : public unordered_map<const C *, const C *>
{
public:
  MyCoolMap()
  {
    insert(value_type("in1", "out1"));
    insert(value_type("in2", "out2"));
    ...
    insert(value_type("inN", "outN"));
  }
};
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用C=wchar_t.问题是我不知道如何模拟char文字和wchar_t文字之间的差异.现在我看到两个丑陋的解决方案.

解决方案1 - 专注MyCoolMapwchar_t:

template<>
class MyCoolMap<wchar_t> : public unordered_map<const wchar_t *, const wchar_t *>
{ …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何查看IntelliJ中的所有jslint错误?

IntelliJ下划线为红色JSLint报告的每个错误,我可以看到文档最右边的相应指示.

但是,我希望在一个窗口中看到所有jslint错误,并能够从错误导航到错误.

可能吗?

谢谢.

javascript jslint intellij-idea

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

如何创建一个mongo索引以确保字段永远不会为null/absent/empty?

我在实体中有一个字段,必须存在,但不一定是唯一的.有没有办法在Mongo中强制执行此约束?

我知道mongo集合是无模式的,集合可以拥有的唯一模式是索引模式.但我不知道是否有索引选项来确保字段值不为空,其中空字段值满足以下javascript表达式:

!value && value !== 0 && value !== false
Run Code Online (Sandbox Code Playgroud)

mongodb

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

如何确定是否在TFS构建代理上运行csproj?

我们使用TFS 2010.

有几个项目具有部署步骤,必须知道它们是在dev机器上运行还是在TFS构建代理程序上运行.

现在,他们检查构建是否来自Visual Studio,假设只有devs从VS编译.唉,这意味着我无法从命令行编译!

所以,我的问题是msbuild脚本如何确定它是否由TFS构建代理运行?

msbuild tfs team-build tfsbuild

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

如何用 .gitattributes 表达 core.autocrlf = false?

这真太了不起了。网上有无数的帖子core.autocrlf.gitattributes我还是不知道该写什么.gitattributes来表达core.autocrlf = false

有人能清除它周围的雾气吗?我并不需要所有花哨的情况下,就给我core.autocrlf = false.gitattributes。没有更多,但也没有更少。

git gitattributes core.autocrlf

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

如何配置 Azure 应用服务以使用 terraform 从 ACR 中提取图像?

我有以下 terraform 模块来在同一计划下设置应用程序服务:

provider "azurerm" {
}

variable "env" {
    type = string
    description = "The SDLC environment (qa, dev, prod, etc...)"
}

variable "appsvc_names" {
    type = list(string)
    description = "The names of the app services to create under the same app service plan"
}

locals {
    location = "eastus2"
    resource_group_name = "app505-dfpg-${var.env}-web-${local.location}"
    acr_name = "app505dfpgnedeploycr88836"
}

resource "azurerm_app_service_plan" "asp" {
    name                = "${local.resource_group_name}-asp"
    location            = local.location
    resource_group_name = local.resource_group_name
    kind                = "Linux"
    reserved            = true

    sku {
        tier …
Run Code Online (Sandbox Code Playgroud)

azure docker terraform azure-web-app-service azure-container-registry

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

是否可以从.NET中的动态方法调用内部方法?

我试图从动态生成的方法中调用内部方法.il代码很简单:ldarg_0,callvirt,ret.

使用TypeLoadException执行该方法失败,说它无法加载定义内部方法的类型.

当我想到它时,这似乎是合乎逻辑的,因为动态方法主机程序集不是方法声明类型程序集的朋友.

但是,我预计动态方法仍然有效,就像Delegate.CreateDelegate一样.毕竟,我确实设法获得内部方法的MethodInfo,因此权限障碍在我身后.

无论如何,问题是"是否可以从动态生成的方法中调用内部方法?"

谢谢.

编辑:

这是一个简单的代码示例,演示了这个问题:

using System;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;

namespace A
{
  internal class Data
  {
    internal string String { get; set; }
  }

  public static class Program
  {
    public static void Main()
    {
      Expression<Func<Data, string>> expr = x => x.String;
      var getterInfo = ((PropertyInfo)((MemberExpression)expr.Body).Member).GetGetMethod(true);
      var getter1 = (Func<Data, string>)Delegate.CreateDelegate(typeof(Func<Data, string>), getterInfo);
      var dm = new DynamicMethod(string.Empty, typeof(object), new Type[] { typeof(object) });
      var gen = dm.GetILGenerator();
      gen.Emit(OpCodes.Ldarg_0);
      gen.Emit(OpCodes.Castclass, typeof(Data));
      gen.Emit(OpCodes.Callvirt, getterInfo);
      gen.Emit(OpCodes.Ret); …
Run Code Online (Sandbox Code Playgroud)

.net reflection.emit dynamic-method

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

DOS批处理脚本是否有"set -e"?

在bash中,脚本开头的"set -e"指示bash在内部任何命令的第一次失败时使整个脚本失败.

如何为Windows批处理脚本执行相同操作?

windows batch-file

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