小编ror*_*yok的帖子

FileNotFoundException从Windows应用商店应用中的Assets文件夹中读取JSON文件

我正在尝试json从我的Assets文件夹中读取文件.我尝试了很多代码示例,并且所有代码都是相同的.

我觉得我必须做一些愚蠢的事情,但我无法看到它.

string filepath = @"Assets\resources.json";
StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = await folder.GetFileAsync(filepath); // error here
var data = await Windows.Storage.FileIO.ReadTextAsync(file);
Run Code Online (Sandbox Code Playgroud)

每次我运行上面的代码,我得到一个System.IO.FileNotFoundException我的应用程序.我已经加倍并三倍检查文件是在资源文件夹中,并且我的路径中没有拼写错误.

我也试过这个

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/resources.json"));
Run Code Online (Sandbox Code Playgroud)

同样的错误. System.IO.FileNotFoundException

我的Assets文件夹的屏幕截图:

我的Assets文件夹的屏幕截图

c# windows file-io windows-runtime windows-store

11
推荐指数
1
解决办法
4076
查看次数

使用System.IO.File.Move时自动创建文件夹

我正在更新一个旧的winforms应用程序,它使用正则表达式和System.IO.File.Move将文件移动到新的位置

在Windows 7下,旧的应用程序工作正常.如果文件夹不存在,File.Move将创建它

System.IO.File.Move("c:\stuff\a.txt","c:\stuff\a\file.txt");
System.IO.File.Move("c:\stuff\b.txt","c:\stuff\b\file.txt");
System.IO.File.Move("c:\stuff\c.txt","c:\stuff\c\file.txt");
Run Code Online (Sandbox Code Playgroud)

但是,在Windows 8下,似乎我必须先在路径中手动创建每个文件夹.如果我尝试移动到一个尚不存在的文件夹,我会收到错误.有人知道解决这个问题吗?我宁愿不必创建每个文件夹

注意:新的,更新的应用程序是在WPF而不是winforms.不确定这是否相关

.net c# wpf move winforms

9
推荐指数
1
解决办法
7717
查看次数

在INSERT之前或之后哪个更快,EXISTS?

我在SQL Server中有一个SP,每分钟运行数百次,需要检查数据库的传入流量.目前它执行以下操作

INSERT INTO table
SELECT @value1,@value2 WHERE NOT EXISTS 
(SELECT * FROM table WHERE value1 = @value1 AND value2 = @value2);
Run Code Online (Sandbox Code Playgroud)

但是,我也可以去

IF NOT EXISTS(SELECT * FROM table WHERE value1 = @value1 AND value2 = @value2)    
   INSERT INTO table (value1,value2) VALUES (@value1,@value2);
Run Code Online (Sandbox Code Playgroud)

哪个会更快?我觉得它们之间没有太大区别,但我在历史上不太擅长TSQL ...... = /

更新:哎呀...意味着表示EXISTS使用多于1个值来查找是否存在记录,因此唯一约束将不起作用.编辑样本以反映......

sql t-sql sql-server insert exists

8
推荐指数
2
解决办法
492
查看次数

Windows 8/XAML双击事件始终以Tap为前缀

我在应用程序中有一个按钮.我想要它做不同的事情取决于我是否点击它(暂停动画)或双击(重新启动动画)

然而,当我双击时,它似乎首先触发点击事件然后快速连续点击两次.有没有解决的办法?这是一个已知的问题还是我犯了一个菜鸟错误?

编辑:对于那些问,我正在使用TappedDoubleTapped事件.

c# xaml double-click touch windows-8

8
推荐指数
2
解决办法
3881
查看次数

在Windows 8 Store Apps/VS2012中检查XAML

我正在寻找一种方法来检查Windows 8商店应用程序中运行的XAML.基本上,我想要firebug/chrome检查器样式功能,我可以查看运行时生成的XAML源,以调试简单的布局和样式问题.

我尝试过Snoop,Pistachio和WPF Inspector,但没有适用于Windows应用商店应用.我能找到的唯一一个似乎适用于商店应用程序的是XAML Spy,这是90欧元.我无法证明这笔费用是合理的.

有没有其他方法来检查运行XAML?

xaml windows-8 windows-runtime winrt-xaml windows-store-apps

8
推荐指数
2
解决办法
3796
查看次数

创建虚拟文件夹并将它们挂钩到文件系统中

我正在为我正在进行的项目收集大量文件夹.我一直试图找到一种更好的方法来对它们进行长时间的排序,我想编写一个基于我说的标准创建组的应用程序,例如"2011年的文件夹"或"包含ax类型文件的文件夹" "等

这是相当简单的,并且在winForms或WPF或其他东西中使用自己的UI进行编码时不会出现太多问题.但我认为,如果我能让这些文件夹成为文件系统的一部分会更好,所以其他应用程序(如现有的文件浏览器)可以看到它们.

这可能吗?它会导致我没有考虑过的问题吗?如果有可能,我该如何去做呢?

我想做的一种方法是让应用程序监控文件系统并在每次更改时创建文件夹快捷方式,但我很好奇是否有可能通过'gateway'文件夹实际向浏览器提供虚假文件系统

编辑:好的,显然有可能,因为http://www.virtualfolder.net/可以做到这一点,现在我想到它可以TrueCrypt,虽然如果它不必作为一个单独的驱动器出现会很好.所以问题就变成了,我该如何实现呢?

windows filesystems file-io winapi

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

在WPF应用程序中使用SQLite-net

我正在尝试让SQLite开发一个新的WPF项目.我最近编写了一堆Windows Store和Phone项目,并且总是那里使用相同的SQLite-net实现,但现在我似乎无法使用我的WPF应用程序.

我已经通过nuget添加了SQLite-net,但我找不到可以添加到项目中的SQLite3.dll版本.当我从SQLite.org下载它时,我收到以下错误.

在此输入图像描述

我究竟做错了什么?我找到的所有教程都告诉我使用,System.Data.Sqlite但我不想再次重写所有的DAL代码

c# sqlite wpf

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

使用OneDrive或Dropbox作为数据库

首先,这不是任何一个重复 这些 问题,其讨论使用单一的Dropbox帐户作为多用户应用的后端

我已经构建了一些应用程序,主要是在Windows Phone和Windows Store上,还有更多的应用程序正在进行中.

我经常发现自己想要在设备之间添加数据同步到同一用户.我的应用程序通常是免费或非常便宜的,我无法支付数据库托管服务器的钱.我确实有一个付费的主机帐户,我可以使用一些有限的数据库空间,但在(不太可能)的事件中,我的一个应用程序成为一个失控的成功我突然陷入了一个大的托管账单.在这种情况下,我不得不突然开始向用户收取以前免费或更糟糕已经付费的应用的经常性金额.

我一直回到这个使用OneDrive,Dropbox或其他免费云托管作为数据库的想法.这是我看到它的工作方式.

让我们说我们有一个名为Jobbie的待办事项应用程序

  • 用户在两台设备上安装Jobbie
  • 用户在两台设备上登录OneDrive,在其OneDrive文件夹中创建"jobbie"同步文件夹
  • 在设备A上,用户创建一个新的待办事项"拾取干洗"
  • 设备A将文本文件上载到OneDrive,名称为"20153001-pick_up_dry_cleaning.item".
  • 设备B扫描文件夹,查找新文件,并将其添加到本地数据库
  • 在设备B上,用户将"拾取干洗"标记为"已完成",并将文件重命名为"x20153001-pick_up_dry_cleaning.item"(或删除)
  • 设备A扫描文件夹,看到项目已重命名(或删除)并将其从本地数据库中删除

我用这种方法看到的明显问题是

  1. 项目限制为255 - 9个字符(9个字符为xYYYYMMDD保留),除非你想下载每个文件很慢
  2. 没有锁定

除了这两个问题,我可能面临实施这样一个系统的其他问题吗?

PS:我还考虑用本地副本覆盖存储的SQLite文件,但我认为这对于移动设备来说会是太多的数据开销

UPDATE

我接受了下面的Peter Nied的回答,其中指出了我可能遇到的问题,这个系统回答了我的问题.但是,Smarx在评论中指出Dropbox有一个免费的数据存储API,我可以用它来为我的应用程序.这似乎是一个比尝试在文件系统上实现我自己的数据存储区更好的解决方案,所以我将继续这样做.

更新2

数据存储区API在我更新帖子后仅3个月就已弃用,因此不再可用.幸运的是,那时我还没有开始反对它.您可以非常轻松地将Dropbox用作标准的平面文件存储,但如果您想进行任何类型的同步,则必须自行滚动

database network-programming dropbox onedrive

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

在Razor/MVC3中使用引号输出HTML属性/文本的正确方法是什么?

假设我的模型中有一个函数,它生成一个基于int的样式标记

public string GetStyle(int? size){
    if(size > 99)
        return "style=\"margin: 20px;\"";
    else
        return "";
}
Run Code Online (Sandbox Code Playgroud)

如果我使用它来渲染它

<li @GetStyle(123)>123</li>
Run Code Online (Sandbox Code Playgroud)

它输出这个:

<li style=""margin:20px;"">123</li>
Run Code Online (Sandbox Code Playgroud)

(注意双引号).如果我将函数中的转义双引号更改为引号,则输出:

<li style="'margin:20px;'">123</li>
Run Code Online (Sandbox Code Playgroud)

两者都不正确,如果不需要样式,我不得不输出空样式标记.

html asp.net-mvc razor

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

将网格的垂直滚动位置与RichEditBox或TextBox匹配

我有一个带有RichEditBox(编辑器)和Grid(MarginNotes)的Windows应用商店应用程序.

我需要始终匹配两个元素的垂直滚动位置.这样做的目的是允许用户在文档的边缘添加注释.

我已经根据光标位置找出了Note定位 - 当添加一个音符时,将对光标之外的所有内容进行文本选择.然后将该选择添加到第二个不可见的RichEditBox内部StackPanel.然后我得到了ActualHeight这个控件,它给出了网格中音符的位置.

我的问题是,当我RichEditBox向上和向下滚动时,Grid不会相应地滚动.

第一种技术

我尝试将它们都放在一个内部ScrollViewer,并禁用滚动RichEditBox

<ScrollViewer x:Name="EditorScroller" 
    VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150" />
            <ColumnDefinition Width="{Binding *" />
            <ColumnDefinition Width="150" />
        </Grid.ColumnDefinitions>
        <Grid x:Name="MarginNotes" Grid.Column="0" HorizontalAlignment="Right"                  
            Height="{Binding ActualHeight, ElementName=editor}">
        </Grid>
        <StackPanel Grid.Column="1">
            <RichEditBox x:Name="margin_helper" Opacity="0" Height="Auto"></RichEditBox>
        </StackPanel>
        <RichEditBox x:Name="editor" Grid.Column="1" Height="Auto"
            ScrollViewer.VerticalScrollBarVisibility="Hidden" />
    </Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

当我滚动到RichEditBox控件的底部,然后按几次输入时,光标就会消失.该ScrollViewer不会自动用光标滚动.

我尝试添加C#代码,它将检查光标的位置,将其VerticalOffset与编辑器的高度进行比较,然后相应地调整滚动.这很有效,但速度非常慢.最初,我在KeyUp活动中使用它,当我输入一个句子时,应用程序停止了.然后我把它放在一个5秒的计时器上,但这仍然减慢了应用程序的性能,也意味着光标在视线和RichEditBox滚动之间可能会有5秒的延迟.

第二种技术

我也试过把MarginNotes …

textbox scrollviewer richedit-control winrt-xaml windows-store-apps

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