小编Tom*_*eld的帖子

WinForms应用程序的自动更新

为.NET WinForms应用程序创建自动更新功能时,它如何更新DLL而不影响当前运行的应用程序?

由于应用程序在更新过程中运行,因此不会锁定DLL(因为在更新期间必须覆盖这些DLL).

auto-update winforms

19
推荐指数
3
解决办法
4万
查看次数

.NET 3.5 SP1中的XmlSerializer更改

我看过很多关于.NET 3.5 SP1变化的帖子,但发现了一个我昨天还没有看到文档的帖子.我的代码在我的机器上工作得很好,从VS,msbuild命令行,一切,但它在构建服务器上运行失败(运行.NET 3.5 RTM).

[XmlRoot("foo")]
public class Foo
{
    static void Main()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Foo));

        string xml = @"<foo name='ack' />";
        using (StringReader sr = new StringReader(xml))
        {
            Foo foo = serializer.Deserialize(sr) as Foo;
        }
    }

    [XmlAttribute("name")]
    public string Name { get; set; }

    public Foo Bar { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

在SP1中,上面的代码运行得很好.在RTM中,您会收到InvalidOperationException:

无法生成临时类(result = 1).错误CS0200:属性或索引器'ConsoleApplication2.Foo.Bar'无法分配 - 它是只读的

当然,使其在RTM下运行所需的只是将[XmlIgnore]添加到Bar属性.

我的google fu显然无法找到这些变化的文档.是否有任何列出此更改的更改列表(以及类似的引擎盖下的更改,可能会跳起来并大喊"问题")?这是一个错误还是一个功能?

编辑:在SP1中,如果我添加了一个<Bar />元素,或者为Bar属性设置了[XmlElement],它将不会被反序列化.它在尝试反序列化时不会在SP1之前失败 - 它在构造XmlSerializer时抛出异常.

这让我更倾向于它是一个bug,特别是如果我为Foo.Bar设置[XmlElement]属性.如果它无法做我要求它做的事情,它应该抛出异常而不是默默地忽略Foo.Bar.XML序列化属性的其他无效组合/设置会导致异常.

编辑:谢谢TonyB,我不知道设置临时文件的位置.对于那些在将来遇到类似问题的人,您需要一个额外的配置标志:

<system.diagnostics>
  <switches>
    <add name="XmlSerialization.Compilation" …
Run Code Online (Sandbox Code Playgroud)

xml serialization .net-3.5

5
推荐指数
1
解决办法
4768
查看次数

使用绑定重定向降级(使用较低版本的库)

我正在使用较旧版本的NHibernate(v3.0.0.1001)而且我坚持使用它,因为新的LINQ提供程序打破了我的一些查询(稍后我将尝试修复).我想更新一个使用NHibernate v3.1.0.4000的库.

我尝试在App.config中添加绑定重定向:

<?xml version="1.0"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.1.0.4000" newVersion="3.0.0.1001"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是当我编译时,我得到:

error CS1705: Assembly 'My3rdPartyDll, Version=0.5.0.170, Culture=neutral, PublicKeyToken=null' uses 'NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' which has a higher version than referenced assembly 'NHibernate, Version=3.0.0.1001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'

是否可以使用绑定重定向指向降级?

c# binding assemblies

5
推荐指数
1
解决办法
2074
查看次数

阻止&符号变成Windows Forms绑定的助记符/加速器

可能重复:
在Windows窗体的文本标签中输入"&"符号?

在标签控件绑定到用户填充属性的屏幕上,我在标签上加下划线字符(助记符),因为基础数据包含&符号.

例如,如果绑定属性包含"A&B Trucking",则标签显示为"AB Trucking",B带有下划线.键盘上的Alt-B会聚焦该标签.

你如何防止绑定控件发生这种情况?

c# binding winforms

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

将最后更新的时间戳添加到FoxPro表

我正在FoxPro和远程SQL Server之间同步数据.一切都运行良好,但在FoxPro方面,如果我能够检测到不需要考虑同步的记录,它会快得多.我计算一个散列值,以与最后已知的散列进行比较,因此对于加载的记录,它很容易.我想要做的是在加载记录之前过滤掉记录,方法是检查updated上一次同步开始时间的列.

如何updated在每次对行进行更改时将列添加到当前日期和时间的VFP 9表中?

foxpro visual-foxpro

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

将图像上传到数据库的正确方法

我知道你们中的一些人会说这不是正确的方法,但我在一个紧迫的截止日期前完成一个应用程序,截至目前我无法返回并修改代码将图像存储在目录中.

现在已经清除了

我的问题是我输入一个图像插入数据库.

(不介意类安全调用,如果数据有效,所有正在进行的操作都会进行一些检查)

$filename = $security->secure($_FILES['imgschool']['name']);
$tmpname = $security->secure($_FILES['imgschool']['tmp_name']);
$imgsize = $security->secure($_FILES['imgschool']['size']);
$imgtype = $security->secure($_FILES['imgschool']['type']);
$school = $security->secure($_POST['school']);


//begin upload
if($imgsize > 0) {
$handle = fopen($tmpname, "r");
$content = fread($handle, filesize($tmpname));
$content = addslashes($content);

//code to add all this to database
}
Run Code Online (Sandbox Code Playgroud)

变量$ content是图像,它的所有内容都是addslashes.我记得有人曾经提到过用base64做的事,但我几乎无法回想起它是如何写的.

这就是我从数据库调用图像的方式

除了所有的查询,这是调用图像的主要部分

header("Content-length: ".$imgsize);
header("Content-type: ".$imgtype);
header("Content-Disposition: attachment; filename=".$imgname);
print $row['img'];
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,而不是图像显示.网址只显示,所以在这种情况下我只看到这个

HTTP://localhost/admin/school-catalog.php页=图库&ID = 4

打开页面时,使用url中设置的正确参数查看图像.


对于那些想要查看正在进行的查询以保存图像的人等等,我复制了整个部分

//save image to db
if(isset($_POST['btnupload'])) {

$filename = $security->secure($_FILES['imgschool']['name']);
$tmpname = $security->secure($_FILES['imgschool']['tmp_name']);
$imgsize = $security->secure($_FILES['imgschool']['size']);
$imgtype = …
Run Code Online (Sandbox Code Playgroud)

php database blob

0
推荐指数
1
解决办法
2895
查看次数