小编Sof*_*are的帖子

无法从程序集加载BuildTasks.Csc任务?

在这里问我这样的问题我感到很内疚,但我很茫然,并会感激一些帮助.

像Web应用程序这样的概念验证是在一台PC上构建的,并放在一个repo上,可以在另一台PC上下载.最初设置了自动构建功能,Azure将在签入时自动构建和发布,但已删除.事情在两端都有效,直到一方包括大量被排除的变更.现在我看到以下错误:

无法
从程序集...\packages\Microsoft.Net.Compilers.1.0.0\build ..\tools\Microsoft.Build.Tasks.CodeAnalysis.dll加载"Microsoft.CodeAnalysis.BuildTasks.Csc"任务.无法加载文件或程序集'file:/// ...\packages\Microsoft.Net.Compilers.1.0.0\tools\Microsoft.Build.Tasks.CodeAnalysis.dll'或其依赖项之一.该系统找不到指定的文件.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.

有没有人对从何处开始寻找问题有任何建议?

asp.net asp.net-mvc entity-framework azure azure-devops

89
推荐指数
9
解决办法
6万
查看次数

使用WCF向客户端触发事件

我知道有关于WCF回调和事件的教程,但是我无法让它们实际工作,或者它们太复杂了.我是一个真正的初学者,所以我很想听听是否有人知道任何可靠的初学者教程,这些教程的目标是我现在想要具体解决的问题.如果我使用错误的术语(请纠正我),请原谅我,就像我说我是初学者一样.

问题:

在此输入图像描述

它可能看起来比实际上更复杂.基本上我想要完成的是:

  1. 具有一些本地内存的主机(比如一个包含5个整数的数组)并运行WCF服务.这将从客户端侦听查询并在更改其中一个整数时从客户端激发更新(事件?)(从外部源,例如通过命令提示符和Set()的用户输入).
  2. 可以进行直接查询以返回这五个整数之一或订阅主机数组的特定索引的客户端.

我可以做什么:

我可以设置连接,但我的服务仅限于独立功能.客户端可以进行"查询",但仅限于远程函数调用(例如"add",其中所有参数都随函数传递,处理在内部完成).

我想弄清楚的是:

  1. 如何从服务合同函数中访问主机内存中保存的一些变量?例如,如何从客户端GetInt()调用一个方法,该方法只返回存储在主机上的应用程序内存中的内容?
  2. 如何从主机向客户端发送"消息"?例如,在主机中,调用TellClient(int x),它会在客户端调用某些函数?如果不在双方都运行服务,这可能吗?

TLDR:

主持人:服务< - >客户端.有没有办法将数据(只是一个int)推送到客户端而无需客户端调用任何函数(没有轮询或查询)?有没有办法让WCF服务访问变量存储在主机应用程序的实例中而不使用静态成员?这可以通过简单的方式完成吗?

谢谢你的帮助和时间,我知道我写了一本书. 如果有人知道任何好的教程,请指出他们. 但请不要 - 请不要指向Add(int x,int y)示例,其中客户端只在主机上调用add并返回结果 - 我已经完成了几次这样做并且它没有帮助我掌握WCF的真正功能.我真的不想在这一点上做任何严肃的事情,我真的想保持简单,所以我可以学习WCF可以做什么,而且我没有发现文档非常有用.再次感谢大家.

c# wcf

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

自动化测试中的DbContext.ChangeTracker会抛出SQLException

我正在为一个我正在努力的项目编写自动化测试,以便更熟悉MVC,EntityFramework(代码优先),单元测试和Moq.

我的类中有一个部分,Repository它设置了LastModified我的模型的一个区域,只要Repository.SaveChanges()控制器调用它就像这样工作(MyModelBase是一个基类):

public void RepoSaveChanges()
{
    foreach(var entry in _dbContext.ChangeTracker.Entities().Where(e => e.State == EntityState.Modified))
    {
        MyModelBase model = entry.Entity as MyModelBase;
        if (model != null)
        {
            model.LastModified = DateTime.Now;
        }
    }
    _dbContext.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

这在正常在线环境中的应用程序运行时期间工作正常,但在测试方法中运行时会中断.我使用Moq来模拟DbContext中的DbSets并设置我的测试数据.

这是我的奇怪部分:我的单元测试运行正常(通过)但它们实际上并没有真正进入foreach循环 - 它在ChangeTracker.Entities()被访问时挂起并退出循环,向下跳转到_dbContext.SaveChanges().没有错误.

但是,在与我共享项目的朋友的机器上,ChangeTracker.Entities()访问时会收到SQLException .我确实在VS2015中检查了SQLExceptions,并且没有输出或其他异常指示.

结果StackTrace:
在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)....

结果消息:
测试方法MyProject.Tests.TestClasses.MyControllerTests.TestCreate引发异常:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

最后,我的问题是:有没有办法使用Moq模拟ChangeTracker(我怀疑不是来自之前的调查),还是我可以采取另一种方法来RepoSaveChanges()自动设置属性?如果没有访问,ChangeTracker.Entities()我需要有更新逻辑来LastModified为每个拥有它的模型类型设置字段.同样,我觉得避免使用该API /框架的一部分,因为测试是顽固的并不理想.

有没有人知道为什么没有抛出/不能在我的机器上捕获SQLException?或者有关如何ChangeTracker.Entities()在单元测试中使用的任何建议?LastModified作为最后的手段,我只会在所有模型和控制器上单独设置属性.

更新: …

c# asp.net-mvc unit-testing entity-framework moq

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