小编Ken*_*ith的帖子

部署后带角度的"未捕获错误:[$ injector:unpr]"

我有一个运行我的dev的机器就好了,但与此错误消息失败(在浏览器控制台)后,我部署一个相当简单的角度应用:

Uncaught Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20%24http%20%3C-%20%24compile

除此之外没有其他消息.它会在页面首次加载时发生.

我正在运行ASP.NET MVC5,Angular 1.2RC3,并通过git推送到Azure.

谷歌搜索没有发现任何有趣的东西.

有什么建议?

编辑:

我正在使用TypeScript,并使用$inject变量定义我的依赖项,例如:

export class DashboardCtrl {

    public static $inject = [
        '$scope',
        '$location',
        'dashboardStorage'
    ];

    constructor(
        private $scope: IDashboardScope,
        private $location: ng.ILocationService,
        private storage: IDashboardStorage) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为应该(或意图)绕过局部变量重命名在缩小期间出现的问题并且可能导致此错误.

也就是说,它显然与缩小过程有关,因为当我BundleTable.EnableOptimizations = true在我的开发机器上设置时,我可以重现它.

angularjs

97
推荐指数
4
解决办法
10万
查看次数

Visual Studio在批处理文件中插入无效字符

我有一些批处理文件,用于帮助自动化创建和重新加载开发数据库的过程.在Visual Studio中创建和维护这些批处理文件是有意义的(即,在VS数据库项目中).它们看起来很简单,像这样:

@echo off
echo Setting server and db from defaults.
set SERVERNAME=(LOCAL)
set DB=PLEDGES
echo Creating tables on server %SERVERNAME% and database %DB%
sqlcmd -S %SERVERNAME% -d %DB% -E -i DropAllTables.sql
sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.UserType.Table.sql
sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.RegisteredUser.Table.sql
echo Done creating tables.
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行它们时,这是输出:

C:\>???
'???' is not recognized as an internal or external command,
operable program or batch file.
Creating tables on server (LOCAL) and database PLEDGES
Done creating tables. …
Run Code Online (Sandbox Code Playgroud)

batch-file visual-studio-2008

64
推荐指数
3
解决办法
2万
查看次数

将实体框架与WPF DataBinding一起使用的最佳实践

我正在构建我的第一个真正的WPF应用程序(即第一个打算供我以外的人使用),我仍然围绕着在WPF中做事的最佳方式.这是一个相当简单的数据访问应用程序,使用仍然相当新的实体框架,但我无法在线找到大量的指导,以便将这两种技术(WPF和EF)结合使用的最佳方式.所以我想我会抛弃我接近它的方式,看看是否有人有更好的建议.

  • 我正在使用SQL Server 2008的实体框架.EF让我觉得它比它需要的要复杂得多,而且还不成熟,但Linq-to-SQL显然已经死了,所以我不妨使用这项技术MS似乎专注于.

  • 这是一个简单的应用程序,所以我(还)认为不适合在它周围构建一个单独的数据层.当我想获取数据时,我使用相当简单的Linq-to-Entity查询,通常直接来自我的代码隐藏,例如:

    var families = from family in entities.Family.Include("Person")
               orderby family.PrimaryLastName, family.Tag
               select family;
    
    Run Code Online (Sandbox Code Playgroud)
  • Linq-to-Entity查询返回IOrderedQueryable结果,该结果不会自动反映基础数据的更改,例如,如果我通过代码向实体数据模型添加新记录,则此新记录的存在不会自动反映在引用Linq查询的各种控件.因此,我将这些查询的结果抛入ObservableCollection,以捕获底层数据更改:

    familyOC = new ObservableCollection<Family>(families.ToList());
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后我将ObservableCollection映射到CollectionViewSource,这样我就可以进行过滤,排序等,而无需返回数据库.

    familyCVS.Source = familyOC;
    familyCVS.View.Filter = new Predicate<object>(ApplyFamilyFilter);
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("PrimaryLastName", System.ComponentModel.ListSortDirection.Ascending));
    familyCVS.View.SortDescriptions.Add(new System.ComponentModel.SortDescription("Tag", System.ComponentModel.ListSortDirection.Ascending));
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后我将各种控件和what-not绑定到CollectionViewSource:

    <ListBox DockPanel.Dock="Bottom" Margin="5,5,5,5" 
        Name="familyList" 
        ItemsSource="{Binding Source={StaticResource familyCVS}, Path=., Mode=TwoWay}" 
        IsSynchronizedWithCurrentItem="True" 
        ItemTemplate="{StaticResource familyTemplate}" 
        SelectionChanged="familyList_SelectionChanged" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 当我需要添加或删除记录/对象时,我从实体数据模型和ObservableCollection手动执行此操作:

    private void DeletePerson(Person person)
    {
        entities.DeleteObject(person);
        entities.SaveChanges();
        personOC.Remove(person);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 我通常使用StackPanel和DockPanel控件来定位元素.有时我会使用Grid,但似乎很难维护:如果要在网格顶部添加新行,则必须触摸网格直接托管的每个控件,以告诉它使用新行.Uggh.(微软似乎从未真正获得DRY概念.)

  • 我几乎从不使用VS WPF设计器来添加,修改或定位控件.VS附带的WPF设计器对于查看表单的外观有点模糊,但即使如此,也不是真的,特别是如果您使用的数据模板不能绑定到可用的数据模板设计时间.如果我需要编辑我的XAML,我会像男人一样手动操作.

  • 我的大部分真实代码都是使用C#而不是XAML.正如我在别处提到的那样,完全除了我还不习惯"思考"它的事实之外,XAML让我觉得它是一种笨重,丑陋的语言,这也恰好伴随着糟糕的设计师和智能感知支持,并且无法调试.Uggh.因此,每当我能够清楚地看到如何在C#代码中执行某些操作时,我无法轻易地看到如何在XAML中执行操作,而是在C#中执行此操作,并且没有道歉.关于如何在WPF页面中使用代码隐藏(例如,用于事件处理)这是一个很好的做法,已经有很多文章,但至少到目前为止,这对我来说毫无意义.当我能使用像C#一样漂亮,干净的语言,拥有世界一流的编辑器,近乎完美的时候,为什么我应该用一种难看的,笨重的语言做一些语法,一个令人难以置信的语法,一个令人惊讶的糟糕的编辑器,几乎没有类型的安全性智能感知,

这就是我所处的位置.有什么建议?我错过了这方面的任何重要部分吗?我应该考虑采取哪些不同的做法?

wpf entity-framework

52
推荐指数
3
解决办法
5万
查看次数

使用Visual Studio 2013保存的Typescript编译?

我不能让Compile-on-Save与VS2013一起工作.我安装了VS2013,重新安装了TS 0.9.0.1,在"工具","选项",打字稿/项目/常规下,我检查了两个"编译保存"选项.但是当我向项目添加新的TS文件,然后编辑并保存它时,更改不会反映在关联的.js文件中.

难道我做错了什么?有人有这个问题吗?

typescript visual-studio-2013

33
推荐指数
3
解决办法
2万
查看次数

WPF/Silverlight/XAML中的强类型数据绑定?

我最大的烦恼之一就是数据绑定如何与XAML一起使用,因为没有强力键入数据绑定的选项.换句话说,在C#中,如果你想访问一个不存在的对象的属性,你将无法获得Intellisense的任何帮助,如果你坚持忽略Intellisense,编译器会抱怨你并赢得'让你继续 - 我怀疑这里的很多人会同意这是一件非常好的事情.但是在XAML数据绑定中,您无需网络即可运行.你可以绑定任何东西,即使它不存在.实际上,考虑到XAML数据绑定的奇怪语法,并且根据我自己的经验,绑定到存在的东西比不存在的东西更复杂.我更有可能让我的数据绑定语法错误而不是正确; 而我花在排除XAML数据绑定上的比较时间很容易使我花在微软堆栈的任何其他部分上的时间相形见绌(包括尴尬和恼人的WCF,如果你能相信的话).其中大部分(并非全部)都回到了这样一个事实,即如果没有强类型数据绑定,我无法从Intellisense或编译器获得任何帮助.

所以我想知道的是:为什么不MS至少给我们一个选项有强类型数据绑定:有点像如何VB6,我们可以做任何反对的变体,如果我们真的自虐,但大部分使用普通的类型变量是有意义的.MS有什么理由不能这样做吗?

这是我的意思的一个例子.在C#中,如果属性"UsrID"不存在,您将从Intellisense收到警告,如果您尝试此操作,则会收到编译器的错误:

string userID = myUser.UsrID;
Run Code Online (Sandbox Code Playgroud)

但是,在XAML中,您可以执行以下所有操作:

<TextBlock Text="{Binding UsrID}" />
Run Code Online (Sandbox Code Playgroud)

Intellisense,编译器或(最令人惊讶的)应用程序本身在运行时都不会给你任何暗示你做错了什么.现在,这是一个简单的例子,但是处理复杂对象图和复杂UI的任何实际应用程序都会有大量等效的场景,这些场景根本不简单,也不容易排除故障.即使您第一次使它正常工作,如果您重构代码并更改C#属性名称,那么您就是SOL.所有东西都会编译,并且它会在没有错误的情况下运行,但是没有任何东西可以工作,让你在整个应用程序中搜寻和啄食,试图弄清楚什么是坏的.

一个可能的建议(在我的头顶,我没有想过)可能是这样的:

对于逻辑树的任何部分,您可以在XAML中指定它期望的对象的DataType,如下所示:

<Grid x:Name="personGrid" BindingDataType="{x:Type collections:ObservableCollection x:TypeArgument={data:Person}}">
Run Code Online (Sandbox Code Playgroud)

这可能会在.g.cs文件中生成一个强类型的ObservableCollection <Person> TypedDataContext属性.所以在你的代码中:

// This would work
personGrid.TypedDataContext = new ObservableCollection<Person>(); 

// This would trigger a design-time and compile-time error
personGrid.TypedDataContext = new ObservableCollection<Order>(); 
Run Code Online (Sandbox Code Playgroud)

然后,如果您通过网格上的控件访问了TypedDataContext,它将知道您尝试访问的对象类型.

<!-- It knows that individual items resolve to a data:Person -->
<ListBox ItemsSource="{TypedBinding}">
    <ListBox.ItemTemplate>
       <DataTemplate>
           <!--This would work -->
           <TextBlock Text="{TypedBinding Path=Address.City}" />
           <!-- This would trigger a …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf xaml

28
推荐指数
4
解决办法
4828
查看次数

使用非美国日期格式时,JsonConvert.DeserializeObject无法将字符串转换为DateTime

我有以下序列化的json对象:

"{\"LineItems\":[{\"LineID\":1,\"QuoteID\":\"00000000-0000-0000-0000-000000000000\",\"Quantity\":\"1\",\"UnitPriceExTax\":\"2\",\"UnitPriceTaxRate\":\"2\",\"UnitPriceTaxAmt\":0,\"LineTotalExTax\":2,\"LineTotalTaxAmt\":0.040000000000000036,\"LineTotalIncTax\":2.04}],\"QuoteID\":[],\"CurrencyID\":\"2\",\"SupplierRef\":\"SDFSFSDF\",\"DeliveryDate\":\"22/02/2014\",\"QuoteAvailablityStartDate\":\"13/02/2014\",\"QuoteAvailablityEndDate\":\"09/02/2014\",\"OpeningComments\":\"WWSFSFS \",\"PricingComments\":\"XSDFSDF \",\"DeliveryComments\":\"SDFSFSDF SDFSFSF\",\"TermsComments\":\"SFSFSDF SDFSFSDF SDFS\",\"FreightExTax\":\"1\",\"FreightExTax2\":1,\"FreightTaxRate\":\"1\",\"FreightTaxAmt\":0.010000000000000009,\"FreightIncTax\":1.01,\"TotalLinesExTax\":2,\"TotalLinesTaxAmt\":0.040000000000000036,\"TotalExTax\":3,\"TotalTaxAmt\":0.050000000000000044,\"TotalIncTax\":3.05}"
Run Code Online (Sandbox Code Playgroud)

一个这发送到服务器我试图反序列化如下:

var json = Request.RequestContext.HttpContext.Request.Params["EoiDraftModel"];
var ld = JsonConvert.DeserializeObject<EoiDraftViewModel>(json);
Run Code Online (Sandbox Code Playgroud)

我遇到了一个错误:

"无法将字符串转换为DateTime:13/02/2014.路径'DeliveryDate',第1行,位置323."

由于日期有效,我假设它与非美国格式有问题.事实上,我知道这是因为如果我的日子少于13,那么反序列化就好了.那么我如何指示反序列化器使用非美国日期?

javascript c# json json.net

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

类型"IUnityContainer"在未引用的程序集中定义

我刚刚将我的ASP.NET MVC/WebApi项目从Microsoft.Practices.Unity 3.5.1404升级到3.5.1406(通过nuget,刚刚发布).之后,我收到了这个编译错误:

错误CS0012类型"IUnityContainer"在未引用的程序集中定义.您必须添加对程序集"Microsoft.Practices.Unity,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"的引用.

在如下的行上:

GlobalConfiguration.Configuration.DependencyResolver = 
    new Unity.WebApi.UnityDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)

当然,我没有引用3.0.0.0,而是3.5.1.0.所以我的假设是Unity.WebApi程序集已针对程序集的早期版本进行编译Microsoft.Practices.Unity.从理论上讲,您需要使用程序集重定向来修复它,如下所示:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.5.1.0" newVersion="3.5.1.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用.

有什么建议?

c# asp.net unity-container

22
推荐指数
4
解决办法
2万
查看次数

升级到.NET 4.7后,"未定义或导入预定义类型System.ValueTuple"

我正在将现有的解决方案从.NET 4.6.2升级到.NET 4.7.此解决方案依赖于几个针对.NET 4.6.2的nuget包,因此依赖于nuget System.ValueTuple包.

但升级后,我收到了大量这些构建错误:

Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported

我无法取出System.ValueTuple包,在评论中建议在这里,因为其他软件包依赖于它.(如果我强迫它,它们似乎会爆炸.)

有什么建议?

更新8/8/17

我已经发现我可以删除System.ValueTuple包,我可以通过这种方式获得编译解决方案.但是,我在解决方案中有十几个NuGet包似乎是针对.NET 4.6.2,因此需要System.ValueTuple作为依赖.我可以安装它们,然后强制删除System.ValueTuple软件包,但是如果这些软件包中的任何软件包有更新,并且我安装了更新 - 那么System.ValueTuple软件包将再次安装,系统将停止构建,直到我再次删除软件包.

换句话说,我可以做到这一切 - 但它似乎很尴尬和kludgy.当然有更好的方法来解决这个问题吗?

.net c# nuget

21
推荐指数
1
解决办法
9256
查看次数

xunit test事实多次

我有一些方法依赖于一些随机的计算提出一个建议,我需要运行情况好几次,以确保正常.

我可以包括用于我要测试,但事实上,因为有几个测试,我想这样做,我是一个更简洁的方法查找,像在JUnit这种重复属性中循环:http://www.codeaffine.com/2013/04/10 /磨合的JUnit测试-反复-无-环/

我可以在xunit中轻松实现这样的功能吗?

c# random xunit

17
推荐指数
4
解决办法
5488
查看次数

从Silverlight 4(Beta)流式传输网络摄像头

Silverlight 4中的新网络摄像头很酷.通过将其作为画笔公开,它允许超出Flash所具有的任何场景.

与此同时,在本地访问网络摄像头似乎只是故事的一半.没有人购买网络摄像头,这样他们就可以拍摄自己的照片并制作出有趣的面孔.他们购买网络摄像头是因为他们希望其他人看到最终的视频流,即他们希望将该视频流式传输到互联网,Skype或任何其他几十个视频聊天网站/应用程序.到目前为止,我还没弄清楚如何做到这一点

事实证明,这是非常简单的,以获得原始(Format32bppArgb格式)的字节流的保持,这表现在这里.

但除非我们想将原始字节流传输到服务器(这会占用过多的带宽),否则我们需要以某种方式对其进行编码.这更复杂.MS已经在Silverlight中实现了几个编解码器,但据我所知,他们都专注于解码视频流,而不是首先对其进行编码.这与我无法弄清楚如何直接访问H.264编解码器的事实不同.

有大量的开源编解码器(例如,在这里的ffmpeg项目中),但它们都是用C语言编写的,并且它们看起来不容易移植到C#.除非翻译10000多行看似这样的代码就是你的乐趣:-)

const int b_xy= h->mb2b_xy[left_xy[i]] + 3;
const int b8_xy= h->mb2b8_xy[left_xy[i]] + 1;
*(uint32_t*)h->mv_cache[list][cache_idx ]= *(uint32_t*)s->current_picture.motion_val[list][b_xy + h->b_stride*left_block[0+i*2]];
*(uint32_t*)h->mv_cache[list][cache_idx+8]= *(uint32_t*)s->current_picture.motion_val[list][b_xy + h->b_stride*left_block[1+i*2]];
h->ref_cache[list][cache_idx ]= s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[0+i*2]>>1)];
h->ref_cache[list][cache_idx+8]= s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[1+i*2]>>1)];
Run Code Online (Sandbox Code Playgroud)

Mono项目中的mooncodecs文件夹(这里)在C#(ADPCM和Ogg Vorbis)中有几个音频编解码器,还有一个视频编解码器(Dirac),但它们似乎只实现了各自格式的解码部分,java也是如此移植它们的实现.

我找到了Ogg Theora的C#编解码器(csTheora,http://www.wreckedgames.com/forum/index.php?topic = 1053.0 ),但同样,它只是解码,就像它所基于的jheora编解码器一样.

当然,从Java移植编解码器可能比从C或C++移植更容易,但我发现的唯一java视频编解码器只是解码(例如jheora或jirac).

所以我有点回到原点.看起来我们通过Silverlight将网络摄像头(或麦克风)连接到Internet的选项是:

(1)等待微软就此提供一些指导;

(2)花费大脑周期将一个C或C++编解码器移植到兼容Silverlight的C#;

(3)将原始的,未压缩的字节流发送到服务器(或者用zlib之类的东西稍微压缩),然后在服务器端编码; 要么

(4)等待比我聪明的人想出这个并提供解决方案.

还有其他人有更好的指导吗?我是否错过了对其他人来说非常明显的事情?(例如,Silverlight 4在某个地方是否有一些我错过的课程可以解决这个问题?)

silverlight webcam silverlight-4.0

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