小编mey*_*ann的帖子

C#引用名称空间隐藏类名称空间

我有一个这样的课:

namespace Token1.Token2.Token3
{
    public class Class1
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

而另一个类是这样的:

namespace Token2.Token4.Token5
{
    public class Class1
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个类是我项目的一部分,第二个类来自我组织中另一个组开发的框架库.请注意,第一个类的名称空间在第二个位置具有Token2,而第二个类的名称空间在第一个位置具有Token2.

我遇到的问题是我似乎无法在第一个类中引用第二个类,因为它看起来像命名空间冲突.如果我尝试在第一堂课中这样做:

namespace Token1.Token2.Token3
{
    public class Class1
    {
        var frameworkClass1 = new Token2.Token4.Token5.Class1();
    }
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio IDE以红色突出显示Token4,并显示"无法解析符号'Token4'".如果我将鼠标悬停在Token2上,我正在新建Class1,intellisense会向我显示"名称空间Token1.Token2",因此它清楚地看到了我的项目类的命名空间而没有看到我的框架类的命名空间.

由于已经存在大量代码,因此很难更改任一类库的名称空间.有办法解决这个问题吗?

c# visual-studio

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

MSTest,MyClassInitialize和实例变量

我想知道在MSTest下初始化测试类中的实例变量的最佳实践是什么.假设我有一个测试类,其中有很多开销来模拟和设置支持对象.我想这样做一次,而不是在每个测试中重复相同的代码.我的想法是使用MyClassInitialize方法初始化一些所有测试都可以访问的全局实例变量.这样,我初始化全局实例变量一次,它们只是在每个测试运行时使用.

不幸的是,MyClassInitialize方法是静态的,因此无法初始化全局实例变量.我想过将全局实例变量设为静态,但似乎不是正确的解决方案.我接下来想到只是将初始化代码放在测试类本身的构造函数中,但我内心的一些东西一直在说MyClassInitialize是我应该使用的.另一个想法是使用MyTestInitialize,因为该方法不是静态的,但是每次测试都会反复创建对象.这合适吗?

是否有关于如何在测试中使用变量的最佳实践,这些变量只需要在测试运行之前初始化一次?以下是我所谈论的一个人为的例子.

[TestClass()]
public class ProgramTest
{
    // this object requires extensive setup so would like to just do it once
    private SomeObjectThatIsUsedByAllTestsAndNeedsInitialization myObject;
    private TestContext testContextInstance;

    [ClassInitialize()]
    public static void MyClassInitialize(TestContext testContext)
    {
        // initializing SomeObjectThatIsUsedByAllTestsAndNeedsInitialization clearly will
        // not work here because this method is static.
    }

    [TestMethod()]
    public void Test1()
    {
        // use SomeObjectThatIsUsedByAllTestsAndNeedsInitialization here
    }

    [TestMethod()]
    public void Test2()
    {
        // use SomeObjectThatIsUsedByAllTestsAndNeedsInitialization here
    }

    [TestMethod()]
    public void Test3()
    {
        // use SomeObjectThatIsUsedByAllTestsAndNeedsInitialization here
    } …
Run Code Online (Sandbox Code Playgroud)

c# mstest visual-studio-2010

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

Angular中的路由和导航2

我正在阅读Angular 2的教程,并且能够启动并运行一个简单的应用程序.现在,我正在转到这里的路由和导航部分https://angular.io/docs/ts/latest/guide/router.html,但有些东西对我不起作用.

我去了Plunker的实例,并从那里下载了代码.然后,我在Visual Studio 2015中设置了一个解决方案,并插入了Plunker下载的所有代码.该应用程序完美地工作,除了一件事,导航似乎没有工作,因为文档似乎表明.

我开始使用IIS Express和Chrome浏览器在Visual Studio中调试应用程序.主页面加载正确,我可以点击危机中心和英雄的链接.当我单击链接时,组件视图正确加载,一切看起来都很完美.

现在,如果我尝试通过简单地键入URL来导航,则组件视图不会加载,我所拥有的只是一个空白页面.

例如,我开始在Visual Studio中调试应用程序,并使用URL http:// localhost:56074 /打开Chrome浏览器.主页面正确加载"组件路由器"标题和"危机中心"和"英雄"的两个链接.现在,如果我只是转到地址栏并在URL的末尾添加"/ crisis-center",使其看起来像http:// localhost:56074/crisis-center,我会得到一个空白页面.Chrome控制台显示以下错误:

获取http:// localhost:56074/crisis-center 404(未找到)导航到http:// localhost:56074/crisis-center

网络追踪清楚地显示了404危机中心.事实上,如果我使用危机中心主页面上的导航链接并点击它来显示危机中心组件视图,然后只需点击刷新按钮刷新页面,而在危机中心视图中,同样的结果发生.

这是一个Visual Studio问题吗?IIS Express?其他想法?

我们是.Net开发商店,我们的主要开发环境是Visual Studio.如果这是使用IIS Express在Visual Studio中开发Angular 2应用程序的问题,这可能是一个显示停止.

如果有人想尝试同样的事情,我可以压缩我的VS解决方案并分享.

有人尝试使用IIS Express在Visual Studio中使用Angular 2应用程序,它可以告诉我我做错了什么吗?

angular2-routing angular

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

使用Delphi DLL和C#中的动态数组

我有一个包含以下类型的Delphi DLL:

type
  TStepModeType = (smSingle, smMultiStep);

  TParameter = record
    Number: Integer;
  end;

  TStruct = record
    ModType: PAnsiChar;
    ModTypeRev: Integer;
    ModTypeID: Integer;
    RecipeName: PAnsiChar;
    RecipeID: Double;
    RootParamCount: Integer;
    StepMode: TStepModeType;
    ParamCount: Integer;
    Parameters: array of TParameter;
  end;
Run Code Online (Sandbox Code Playgroud)

我需要从C#调用这个DLL,传递一个对应于DLL将填充并返回的Delphi类型的ref对象.我在C#代码中定义了这样的结构:

enum stepModeType
{
    Single,
    MultiStep
}

[StructLayout(LayoutKind.Sequential)]
struct parameter
{
    public int Number;
}

[StructLayout(LayoutKind.Sequential)]
struct recipe
{
    public string modType;
    public int modTypeRev;
    public int modTypeId;
    public string recipeName;
    public double recipeId;
    public int rootParamCount;
    public stepModeType stepMode;
    public int paramCount; …
Run Code Online (Sandbox Code Playgroud)

c# delphi pinvoke

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

在Cake构建期间,当前上下文中不存在名称"Npm"

我在Jenkins构建服务器上运行Cake构建并且正在获取

error CS0101: The name 'Npm' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

任务看起来像这样

Task("NpmInstall")
    .Does(() =>
    {
        Npm.FromPath("./src/MyProject/").Install();
    });
Run Code Online (Sandbox Code Playgroud)

Cake构建在安装了Visual Studio 2017的开发机器上完美运行,因此我知道脚本很好,但由于某种原因,它会在Jenkins构建服务器上抛出此错误.我猜我在我的开发机器上安装了一些工具,这些工具在Jenkins机器上不存在,但我似乎无法找到它是什么.

以下是上一次构建的诊断输出

Preparing to run build script...
Chocolatey v0.10.5
Nothing to change. Config already set.
Chocolatey v0.10.5
Installing the following packages:
gitversion.portable
By installing you accept licenses for the packages.
GitVersion.Portable v4.0.0-beta0011 already installed.
 Use --force to reinstall, specify a version to install, or try upgrade.

Chocolatey installed 0/1 packages. 0 packages failed.
 See the log for details …
Run Code Online (Sandbox Code Playgroud)

jenkins cakebuild

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