小编Bat*_*nit的帖子

在构建代理上运行代码分析(FxCop> 10)而不安装Visual Studio

在FxCop 10之后,Microsoft停止为FxCop发布单独的安装程序.在安装Visual Studio 2013/2015/2017之后,官方目前只能运行代码分析(FxCop 12.0/14.0/15.0).但是,我们坚持不在构建代理上安装Visual Studio(安装需要保留在 - 与我们在开发者计算机上获得的内容同步等).

那么我将如何让FxCop 12.0/14.0/15.0在构建代理上工作,最好不要安装其他任何东西?不过,我会接受为源代码控制添加一些二进制文件和msbuild文件.否则:有没有办法只使用Visual Studio 2013/2015/2017安装程序安装FxCop的东西?

注意:我们使用Teamcity作为构建服务器.

答案

由于特定环境和FxCop版本有多个有效答案,我可以自由地将它们链接到此处以便于访问:

.net msbuild continuous-integration fxcop build-server

56
推荐指数
4
解决办法
3万
查看次数

如何在加载项目时让Visual Studio执行MsBuild InitialTargets(或构建项目)

介绍

我正在寻找一个扩展点"在VS加载项目时执行".这也应该可以合并到VS外部的构建运行中.这意味着它应该以msbuild脚本结束.

MSBuild InitialTargets

我现在已经发现的MSBuild提供了在任何其他执行执行目标的扩展点:<Project InitialTargets="..."/>.这非常适合我对控制台/构建服务器构建的需求.但是,对于Visual Studio,我更喜欢在VS加载解决方案时也会(另外)发生.所以我检查了是否是这种情况:是和否.当我将以下项目导入我*.csproj的:

  <Target Name="TestOnStart">
      <Warning Text="Hey $(MSBuildProjectName) is being initialised"/>
  </Target>
Run Code Online (Sandbox Code Playgroud)

在VS中加载解决方案后,弹出一些项目的警告,但不是全部.

问题

  • 如何让VS InitialTargets在每次加载时执行?

或者也许你可以帮助我回答这个问题,让我自己找到一个解决方案;-):

  • VS如何确定是否运行构建或InitialTargets在加载项目时执行?
    • 我怎么能影响这个呢?

谢谢 :)

附录:

我刚刚注意到,如果我从csproj外部更改解决方案的项目文件之一,VS会问我是否要重新加载项目.如果我选择"重新加载所有项目",它将执行InitialTargets所有项目.因此,这可能需要使用缓存等.因此,我的问题的解决方案可能涉及让VS相信项目中的某些内容发生了变化(在加载解决方案之前/之前).

msbuild visual-studio visual-studio-2013

8
推荐指数
0
解决办法
722
查看次数

验证正在等待任务

我有以下代码,我想测试:

private Task _keepAliveTask; // get's assigned by object initializer

public async Task EndSession()
{
    _cancellationTokenSource.Cancel(); // cancels the _keepAliveTask
    await _logOutCommand.LogOutIfPossible();
    await _keepAliveTask;
}
Run Code Online (Sandbox Code Playgroud)

重要的是,EndSession只有`_keepAliveTask'结束后,Task才会结束.但是,我很难找到一种方法来可靠地测试它.

问题:我如何对EndSession方法进行单元测试并验证等待Task返回的方法.EndSession_keepAliveTask

出于演示目的,单元测试可能如下所示:

public async Task EndSession_MustWaitForKeepAliveTaskToEnd()
{
    var keepAliveTask = new Mock<Task>();
    // for simplicity sake i slightly differ from the other examples
    // by passing the task as method parameter

    await EndSession(keepAliveTask);

    keepAliveTask.VerifyAwaited(); // this is what i want to achieve
}
Run Code Online (Sandbox Code Playgroud)

进一步的标准: - …

.net c# unit-testing task-parallel-library async-await

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

NamedScope和垃圾收集

(这个问题最初是在Ninject Google Group中提出的,但我现在看到Stackoverflow似乎更活跃了.)

我正在使用NamedScopeExtension将相同的ViewModel注入到View和Presenter中.发布View后,内存分析显示Ninject缓存仍保留ViewModel.如何让Ninject发布ViewModel?表单关闭和处置时释放所有ViewModel,但我使用表单中的Factory创建和删除控件,并希望将ViewModel垃圾收集到(收集Presenter和View).

有关问题的说明,请参阅以下UnitTest,使用dotMemoryUnit:

using System;
using FluentAssertions;
using JetBrains.dotMemoryUnit;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Ninject;
using Ninject.Extensions.DependencyCreation;
using Ninject.Extensions.NamedScope;

namespace UnitTestProject
{
    [TestClass]
    [DotMemoryUnit(FailIfRunWithoutSupport = false)]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod()
        {
            // Call in sub method so no local variables are left for the memory profiling
            SubMethod();

            // Assert
            dotMemory.Check(m =>
            {
                m.GetObjects(w => w.Type.Is<ViewModel>()).ObjectsCount.Should().Be(0);
            });
        }

        private static void SubMethod()
        {
            // Arrange
            var kernel = new StandardKernel();
            string namedScope = "namedScope";
            kernel.Bind<View>().ToSelf()
                  .DefinesNamedScope(namedScope);
            kernel.DefineDependency<View, …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection ninject ninject-extensions

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

如何在Unity中减小APK文件的大小?

是Unity 8MB制作的Android应用的最小APK大小吗?我正在构建一个空项目,但仍然获得8MB.有没有办法减少APK的大小?

android unity-game-engine apk

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

统一读取和解析 C# 中的 Json 文件

这是代码

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;

public class csharpfile:MonoBehaviour{

    public void LoadJson()
    {
        using (StreamReader r = new StreamReader("file.json"))
        {
            string json = r.ReadToEnd();
            List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json);


        }
    }

    public class Item
    {
        public int millis;
        public string stamp;
        public DateTime datetime;
        public string light;
        public float temp;
        public float vcc;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想解析文件内容(file.json)

[ 
    { "millis": "1000", 
      "stamp": "1273010254", 
      "datetime": "2010/5/4 21:57:34", 
      "light": "333", 
      "temp": "78.32", 
      "vcc": "3.54" }, 
] 
Run Code Online (Sandbox Code Playgroud)

文件解析后我将如何在屏幕上打印内容以及如何写入文件 .do help …

c# json unity-game-engine jsonobject

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