几乎所有第三方模块WebStorm的自动获取都无法解析方法/字段.在自动完成下,我的意思是所有类似intellisense的功能.例如:
var async = require('async');
async.series() //WebStorm's tooltip says: Unresolved function or method series()
Run Code Online (Sandbox Code Playgroud)
同时它解决了
async.exports.series().
Run Code Online (Sandbox Code Playgroud)
但这会导致运行时错误:
TypeError: Cannot call method 'series' of undefined
Run Code Online (Sandbox Code Playgroud)
对于我自己的模块,我找到了解决方法.如果我在模块中:
var myModule = module.exports;
myModule.someMethod = function(){
...
}
Run Code Online (Sandbox Code Playgroud)
然后someMethod的自动缩放工作正常.
关于以上所有,我有一堆问题.
1.为什么ide无法解析async.series()?
2.为什么async.exports.series()会导致运行时错误?
3.如何进行自动化工作?
WebStorm 5.0.4.
目前我这样做:
public MainWindow()
{
InitializeComponent();
Title = Properties.Resources.WindowName;
}
Run Code Online (Sandbox Code Playgroud)
如何通过WPF绑定做同样的事情?
编辑:它仍然无法在XAML中工作.
环境:VS2010,.NET 4.0,Windows 7.
复制步骤:
使用代码创建类库ClassLibrary1:
namespace ClassLibrary1
{
static public class Class1
{
static public string Something
{
get { return "something"; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
在VS2010 .NET 4.0中创建WPF Windows应用程序.
编辑主窗口的XAML:
<Window x:Class="ahtranslator.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ClassLibrary1="clr-namespace:ClassLibrary1;assembly=ClassLibrary1"
Title="{Binding Source={x:Static ClassLibrary1:Class1}, Path=Something}"
Height="350" Width="525" Icon="/ahtranslator;component/Icon1.ico" WindowStyle="SingleBorderWindow" ShowInTaskbar="False" DataContext="{Binding}">
Run Code Online (Sandbox Code Playgroud)
...
编译错误消息:
MainWindow.xaml(7,130):错误MC3029:'ClassLibrary1:Class1'成员无效,因为它没有合格的类型名称.
另外我在WPF XAML中发现了这个话题My.Resources?.似乎一切都应该有效,但事实并非如此.
Microsoft未提供此错误消息的说明.帮助论坛http://social.msdn.microsoft.com/Forums/en/wpf/thread/4fe7d58d-785f-434c-bef3-31bd9e400691中只有另一个主题,这也无济于事.
我完全按照在Setter.Value结构中设置事件处理程序中所述的方式来解决问题.但我想理解为什么问题的作者提供的解决方案不起作用.看起来我错过了一些概念.
例如:
1.我正在修复一个错误,需要打破异常.我打算打破所有例外.
然后我决定不打破一些例外并禁用它们.
我解决了这个bug并禁用了所有异常.糟糕,所有偏好都消失了.
我发现了另一个错误,需要重复真正讨厌的第2步.
那么,如何避免重复步骤2?
这是我的代码:
HTML:
<div id="container" ng-controller="MyCtrl"> {{model.name}} </div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var app=angular.module('myApp', []);
var $injector =angular.injector(['ng']);
$injector.invoke(function($compile, $rootScope) {
var html = '<div ng-controller="MyCtrl1">{{model.name}}</div>'
var scope = $rootScope.$new();
scope.model = {name:'MyCtrl1'};
//alert(scope.model.name);
var e3 = $compile(html)(scope);
$('#container').append(e3[0]);
});
function MyCtrl($scope) {
$scope.model={};
$scope.model.name = 'MyCtrl';
};
function MyCtrl1($scope) {
//alert('MyCtrl1');
};
Run Code Online (Sandbox Code Playgroud)
如你所见,它呈现两个'MyCtrl'字符串.即angular忽略我手动创建的范围对象.
问题是:如何$compile使用我创建的范围?
更新:丑陋的解决方法:
在打电话再次$compile申请模型之后:
angular.element(e3[0]).scope().$apply(function(scope) {
scope.model = {name:'MyCtrl1'};
});
Run Code Online (Sandbox Code Playgroud) 看起来F#调试器在VS 2015中无法正常工作.让我在简单的控制台程序上进行说明:
let f1 =
printf "hello 1"
printf "hello 2" //1
[<EntryPoint>]
let main argv =
f1 //2
0
Run Code Online (Sandbox Code Playgroud)
我在第1行和第2行设置断点并启动调试器.
被击中的第一个BP是// 1,而它应该是// 2.这是为什么?
此时此刻我无法导航到callstack的最顶层.即当我双击callstack条目时,它应该导航我行// 2 VS告诉我"Source Not Available".这是为什么?
这两个问题并没有阻止我调试,但仍然让人很不高兴.
我需要F#与Entity Framework一起使用.我试图从这里改编示例:https://blogs.msdn.microsoft.com/visualstudio/2011/04/04/f-code-first-development-with-entity-framework-4-1/ 问题是那个记录声明在那里太可怕了,这对我来说是不可接受的.
type public Car() =
let mutable m_ID : int = 0
let mutable m_name : string = ""
[<Key>]
member public this.ID with get() = m_ID
and set v = m_ID <- v
member public this.Name with get() = m_name
and set v = m_name <- v
Run Code Online (Sandbox Code Playgroud)
我以这种方式尝试过CLIMutable:
module Program
[<CLIMutable>]
type Car = {
Name:string
}
let c = new Car(Name = "Honda")
Run Code Online (Sandbox Code Playgroud)
它会导致错误:"没有可用于'Car'类型的构造函数".据我所知,这个答案可能是一个解释:https: //stackoverflow.com/a/28845368/585819
我也尝试过这样的事情:
[<CLIMutable>]
type Car =
{ …Run Code Online (Sandbox Code Playgroud) 我有F#项目,我想用命令行构建(稍后在FAKE配置中使用).问题是,当我直接在项目文件上使用它时,MSBuild无法解决程序集依赖性.当我使用包含此单个项目的解决方案文件时,它可以正常运行.
我真的没有想法了.解决方案文件似乎不包含任何关键信息.
另一个奇怪的事情是VSCode也无法解析其中一个程序集.我希望当我修复MSBuild配置时,我可能会看到VSCode有什么问题.
命令行:
"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" FSharpWeb1\FSharpWeb1.fsproj /t:rebuild
Run Code Online (Sandbox Code Playgroud)
错误信息:
C:\work\MNP\testMSBuild1\FSharpWebApi\FSharpWeb1\FSharpWeb1.fsproj(173,5): error MSB4062: The "MSBuild.ExtensionPack.FileSystem.File" task could not be loaded from the assembly C:\work\MNP\testMSBuild1\FSharpWebApi\FSharpWeb1\*Undefined*\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.dll. Could not load file or assembly 'file:///C:\work\MNP\testMSBuild1\FSharpWebApi\FSharpWeb1\*Undefined*\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.dll' or one of its dependencies. The filename, directory name, or volume label syntax is incorrect. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.Done Building Project "C:\work\MNP\testMSBuild1\FSharpWebApi\FSharpWeb1\FSharpWeb1.fsproj" (rebuild target(s)) -- FAILED. …Run Code Online (Sandbox Code Playgroud) 我需要比较不同类型的对象,我知道它们都有属性Id和Legacy_id.不幸的是我无法为它们添加接口,因为类型来自数据库模式.我希望以下比较器可以工作:
type Comparer<'T >()=
interface System.Collections.Generic.IEqualityComparer<'T> with
member this.Equals (o1:'T,o2:'T)=
o1.Legacy_id=o2.Legacy_id
member this.GetHashCode(o:'T)=
o.Id+o.Legacy_id
Run Code Online (Sandbox Code Playgroud)
此外,我还有类型的比较器类型的实例化.所以,理论上编译器有足够的信息.
但是它给出了一个错误:"基于此程序点之前的信息查找不确定类型的对象.在此程序点之前可能需要类型注释来约束对象的类型.这可以允许解析查找. "
我想知道为什么F#在这里失败了?是否有任何实际/理论限制或者它没有实施?这种推断可能非常有用.
我怀疑解释是关于F#编译器只是向前走.C#的限制没有.这是错误消息抱怨的内容.是这样吗?