我正在将Net Framework 4 dll移植到Net Core.当移植我的单元测试项目时,我得到一个运行一些特定测试的异常(不是全部).
System.IO.FileLoadException:无法加载文件或程序集'System.Net.Http,Version = 4.1.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
这是我的dll的project.json
{
"version": "1.0.0-*",
"dependencies": {
"log4net": "2.0.7",
"NETStandard.Library": "1.6.1",
"Newtonsoft.Json": "9.0.1",
"StackExchange.Redis": "1.2.1"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是单元测试项目的Packages.config
<packages>
<package id="Castle.Core" version="4.0.0" targetFramework="net462" />
<package id="log4net" version="2.0.7" targetFramework="net462" />
<package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
<package id="Moq" version="4.7.1" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
<package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
<package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
<package id="System.IO" version="4.1.0" targetFramework="net462" />
<package id="System.IO.FileSystem" …Run Code Online (Sandbox Code Playgroud) 我已经找到了一些问题,但是他们倾向于指出我正在遵循的确切文档......但它仍然没有用.
我正在构建一个相当简单的ASP.NET MVC 4站点,计划是使用ActionFilterAttribute基于日志的.我有一个DataAccessProvider类打开与数据库的事务并提供工作单元实例,我试图将它注入filter属性.
该文件说,这是不够的,只是打电话RegisterFilterProvider(),并确保相关类型注册.它明确表示没有必要注册属性,但我已经尝试了有无.我的代码目前看起来像这样:
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.Register(x => new EntityAccessProvider())
.As<IDataAccessProvider>()
.InstancePerHttpRequest();
builder.RegisterType<DebugLogAttribute>().PropertiesAutowired();
// ^ I've tried it with and without this line
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
然后,文档中的示例只是在过滤器上放置一个属性,所以我做了同样的事情:
public class DebugLogAttribute : ActionFilterAttribute
{
private IDataAccessProvider DataAccess { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext) { ... }
public override void OnActionExecuted(ActionExecutedContext filterContext) { ... }
}
Run Code Online (Sandbox Code Playgroud)
文档说这一切都是必需的 - 甚至不是注入的构造函数; 这是通过注入财产来完成的.但是,当我运行此代码时,该DataAccess属性始终是 …
我有一个私有的NuGet包源运行,我用它来共享我的项目之间的某些功能和扩展.它在Visual Studio中运行良好,但最近我开始为Visual Studio Online上的一个项目设置持续集成构建,似乎VSO无法看到我的私有源.
我正在使用新的包恢复方法 - 涉及在VS选项中设置"允许NuGet下载丢失的包"复选框.我没有在解决方案上下文菜单中使用"启用NuGet包恢复"选项,因为这实际上是执行此操作的旧方法并导致其他地方出现问题.
我也没做任何修改我的项目文件的事情; 我正在使用自定义构建定义(使用XAML Workflow的东西),这样我就可以将它应用到我的任何项目中,只需从构建定义编辑器下的"构建过程模板"下拉列表中选择它.我这样做是因为我正在添加各种其他步骤,包括一些后期构建脚本,以便于自动部署到托管服务器; 其中一些步骤有点复杂,因此将它们保留在构建过程中意味着我只需要设置一次.
因此,如果不使用将nuget.exe放入解决方案文件夹的旧上下文菜单解决方案,并且不会弄乱项目本身,我如何才能获得VSO的构建以从我的私有源恢复包?
构建工作流模板有一个活动"NuGetRestore",它可以获取命令行参数.我添加了以下内容:
"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget"
Run Code Online (Sandbox Code Playgroud)
但这似乎没有什么区别.此活动还有一个"指定需要恢复其NuGet包的解决方案"的字段,我只是将ProjectsToBuild其设置为定义构建时设置的变量.我没有从nuget.exe得到任何错误(至少,我没有看到),但构建失败.有趣的是,它表示相关的命名空间不存在,而不是无法解析引用.有任何想法吗?
两者之间的性能是否存在巨大差异,例如我有这两个代码片段:
public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
var insertGeofences = new List<Geofence>();
foreach(var geofence in geofences)
{
Geofence insertGeofence = new Geofence
{
name = geofence.Name,
radius = geofence.Meters,
latitude = geofence.Latitude,
longitude = geofence.Longitude,
custom_point_type_id = geofence.CategoryID
};
insertGeofences.Add(insertGeofence);
}
this.context.Geofences.InsertAllOnSubmit(insertGeofences);
this.context.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
VS
public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
foreach(var geofence in geofences)
{
Geofence insertGeofence = new Geofence
{
name = geofence.Name,
radius = geofence.Meters,
latitude = geofence.Latitude,
longitude = geofence.Longitude,
custom_point_type_id = geofence.CategoryID
};
this.context.Geofences.InsertOnSubmit(insertGeofence);
}
this.context.SubmitChanges();
} …Run Code Online (Sandbox Code Playgroud) 我在MVC5(VS2013)中使用授权/角色时遇到了麻烦.
身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目).我将DefaultConnection连接字符串更改为有效(但不存在)的数据库.然后我注册一个新的用户和数据库被自动创建,以表,如AspNetUsers和AspNetRoles.
但是,我似乎无法对角色做任何事情.要做的第一件事似乎是使用C#代码添加角色,例如:
Roles.CreateRole("Admin");
Run Code Online (Sandbox Code Playgroud)
我收到一条消息的异常:
"尚未启用角色管理器功能."
我在web.config中使用以下命令启用它:
<roleManager enabled="true"/>
Run Code Online (Sandbox Code Playgroud)
现在得到例外:
"无法连接到SQL Server数据库."
这曾经非常容易使用System.Web.Security.SqlRoleProvider,但不适用于MVC5默认的新提供程序.关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作.
非常感谢任何帮助.
在 ASP.NET MVC 4 中,我知道您可以通过将configSource这些部分的属性指向相关文件来将 Web.config 文件的部分移动到其他文件。我也知道您可以appSettings通过使用file属性指向正确的文件来更多的部分。但是,据我所知,这些方法将您限制为每个文件的一个部分。
我想要做的是将最终用户可以编辑的所有设置移动到一个文件中,以便我们可以告诉用户这个文件可以被调整,但任何其他.config文件都应该单独保留。不幸的是,如果我将(例如)appSettings和connectionStrings部分移动到同一个文件,我会收到错误消息。
<configuration>像在主 Web.config 文件中那样用标签包装这些部分,我会收到一条错误消息,指出“configSource 文件的格式必须是包含该部分名称的元素”,这表明每个部分的限制文件相当严格。有没有解决的办法?我可以将多个部分放在一个文件中吗?
这有点奇怪.
我正在构建一个Web应用程序,我正在整理一个简单的工厂模式,以处理一些对象实例化.我不喜欢丑陋的开关盒块,所以我倾向于这样做:
public enum Option
{
Option1,
Option2,
Option3
}
public Dictionary<Option, Func<MyBaseClass>> OptionMapping
= new Dictionary<Option, Func<MyBaseClass>>
{
{ Option1, () => new DerivedClassOne() },
{ Option2, () => new DerivedClassTwo() },
{ Option3, () => new DerivedClassThree() }
};
Run Code Online (Sandbox Code Playgroud)
然后开关块变为MyBaseClass selectedThing = OptionMapping[currentOption]();.
在我编写这段代码时,我想到如果你遇到过两个选项需要相同动作的情况,你最终会Func<>在两个地方找到相同的结果,我宁愿避免.假设目前你不能只重构一些逻辑来将这两个选项合并为一个,我想知道是否有办法让一个Func人调用另一个.
我的第一个想法是:
public Dictionary<Option, Func<MyBaseClass>> OptionMapping
= new Dictionary<Option, Func<MyBaseClass>>
{
{ Option1, () => new DerivedClassOne() },
{ Option2, () => new DerivedClassTwo() },
{ Option3, () => …Run Code Online (Sandbox Code Playgroud) 我是JSON.NET的新手,我需要帮助反序列化以下JSON
{
"items": [
[10, "file1", "command 1"],
[20, "file2", "command 2"],
[30, "file3", "command 3"]
]
}
Run Code Online (Sandbox Code Playgroud)
对此
IList<Item> Items {get; set;}
class Item
{
public int Id {get; set}
public string File {get; set}
public string Command {get; set}
}
Run Code Online (Sandbox Code Playgroud)
JSON中的内容始终是相同的顺序。
我试图使标签水平滚动,并希望halign:"right并valign:middle按照下面的代码
ScrollView:
Label:
id:maindisplay
text:"0"
font_size:"50sp"
text_size: None ,self.height[1] # Set the text wrap box height
size_hint_x:None
width: self.texture_size[0]
#Following part is not working
halign: 'right'
valign: 'middle'
Run Code Online (Sandbox Code Playgroud)
我正在编写一个数据查看器页面来渲染从服务器以JSON格式发送的对象.JSON对象的内容和复杂性各不相同,从具有少量属性的扁平对象到具有多层嵌套和数组字段的较大结构.我想做的是渲染对象的简单表示,可能是ul.从那里我可以添加东西以允许可点击的展开/折叠行为或其他东西.
我知道这将需要一个我可以在顶层调用的递归函数,然后将为它发现的每个嵌套级别再次调用它.我对Javascript不太自信,而且我对它的了解并不是很远.我也不知道我不知道属性名称的事实 - 不同的对象将具有不同的属性,具有不同的名称.
是否有一种相对简单的方法来渲染这样的对象,还是我必须改变服务器发送的JSON的形式?
编辑:JSON的样本可能无济于事; 他们变化很大.就像我说的,有些很简单,有些很复杂.最简单的对象是这样的:
{
"id": "5",
"category": "12",
"created": "25-Sep-2012"
}
Run Code Online (Sandbox Code Playgroud)
而我目前最复杂的是这样的:
{
"Attempted":"EditUser",
"Exception":{
"Message":"Something",
"TargetSite":"somewhere",
"Inner Exception":{
"Message":"Something else",
"TargetSite":"somewhere.core",
"Inner Exception":{
"Message":"Another message",
"TargetSite":"something.core.subr",
"Inner Exception":{
"Message":"Object reference not set to an instance of an object.",
"TargetSite":"System.Web.Mvc.ActionResult Update(Int32, System.String, System.String)",
"StackTrace":[
"at Application.Controllers.AdminController.Update(Int32 id, String email, String password) in c:\\Docs\\Apps\\Main\\MyBranch\\Source\\Application\\Application\\Controllers\\AdminController.cs:line 123"
],
"Inner Exception":{
}
}
}
}
},
"details":{
"userEmail":"test@email.com",
"userId":"25",
"userRole":"User"
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它是错误日志的JSON表示,包括软件抛出的异常(敏感细节已被遮盖).JSON对象是从审计日志的"详细信息"字段生成的,因此将来可能会记录其他事件,其详细信息格式与我现在预测的任何格式不同,这就是为什么我要处理任意JSON而不依赖于了解格式.
c# ×6
.net ×1
.net-core ×1
android ×1
autofac ×1
azure-devops ×1
dictionary ×1
html ×1
javascript ×1
json ×1
json.net ×1
kivy ×1
label ×1
linq ×1
linq-to-sql ×1
nuget ×1
porting ×1
python ×1
role-manager ×1
scroll ×1
sql ×1
this ×1
web-config ×1