小编Dzy*_*ann的帖子

在循环内部或外部使用不安全是否有任何区别?

我过去从不需要使用不安全的东西,但是现在我需要它来处理一个操纵位图的指针.

我找不到任何其他方面的文档,但我想更好地理解不安全是如何工作的,如果在循环内部或外部使用它会有什么不同.

做得更好:

unsafe
{
    for (int x = 0; x < maxX; x++)
    {
        for (int y = 0; y < maxY; y++)
        {           
            //Unsafe pointer operations here.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还是做?:

for (int x = 0; x < maxX; x++)
{
    for (int y = 0; y < maxY; y++)
    {   
        unsafe
        {       
            //Unsafe pointer operations here.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# unsafe

65
推荐指数
2
解决办法
2131
查看次数

为什么在Visual Studio 2012中禁用了"首选32位"复选框?

我遇到了一种情况,我想将Prefer 32位设置为true.但在Visual Studio 2012中,它显示为已禁用.而且无论我做什么,它都无法启用.

我读到任何带有首选32位的CPU都是所有新项目的默认值.那么,我应该假设虽然它被禁用但它被设置为true?那怎么能把它设置为任何CPU

AnyAppU真正意味着.NET 4.5和Visual Studio 11以及Stack Overflow中的许多其他帖子和问题中,它说:

总的来说,/ platform C#编译器交换机现在有五个选项:x86,Itanium,x64,anycpu和anycpu 32bit首选

更重要的是,我有一些同事已经向我提到,过去那个复选框已启用(可能是错误的?).

为什么禁用了Prefer 32位复选框,如何再次启用它?

我的处理器是64位,我已将Update2应用于Visual Studio 2012.

c# visual-studio visual-studio-2012

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

客户端计算机上的"清单XML签名无效",但在开发人员计算机上运行正常

在工作中,我们有一个ClickOnce应用程序,当客户端尝试安装时,它会抛出异常:

  • 从文件中读取异常:/ FILEPATH:清单可能无效或无法打开文件.

    清单XML签名无效.

    无法为提供的签名算法创建SignatureDescription.

为了解决这个问题,我们最终使用了另一个证书文件,并且工作正常(重新签署了清单).

但是我们无法理解为什么在开发人员机器中安装应用程序(甚至是不使用该应用程序的开发人员)会起作用,但它不适用于客户端的机器?

我们没有太多关于如何创建证书或ClickOnce包的信息,因为执行该证书的人已经离开并且没有留下关于它的文档.

正在使用的证书没有密码,普通用户没有管理员权限.

从Stack Overflow问题Manifest XML签名无效,我猜测问题可能是他们使用.NET Framework 4.5 创建项目和证书,然后当他们将应用程序设置为使用.NET Framework 4.0运行时,他们没有更改签名算法.但后来我认为它不应该对开发人员起作用.

您可以给我的任何见解将不胜感激.

clickonce

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

如何在Visual Studio中设置C++/CLI项目的版本?

我正在使用C++/CLI项目,该项目在Visual Studio 2012中包装C++本机库.

我的C++/CLI项目有一个AssemblyInfo.cpp.我在那里设置了所有字段,其中包括"AssemblyVersionAttribute".但是,当我在Windows资源管理器中构建项目并检查其属性时,版本信息为空.

这是我的第一个C++/CLI项目,我一直在查看项目属性中的所有选项,但我找不到任何可用于设置版本的选项.

如何设置C++/CLI项目的版本?


更新

我将添加AssemblyInfo.cpp的内容.我刚刚填写了现有的字段,这是在我创建项目时自动生成的.

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;

[assembly:AssemblyTitleAttribute("MyTitle")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("")];
[assembly:AssemblyProductAttribute("MyProduct")];
[assembly:AssemblyCopyrightAttribute("Copyright © 2014")];
[assembly:AssemblyTrademarkAttribute("Inc")];
[assembly:AssemblyCultureAttribute("")];
[assembly:AssemblyVersionAttribute("3.9.0")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
Run Code Online (Sandbox Code Playgroud)

c++-cli visual-studio-2012

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

如何在Oracle中选择列,*FROM TABLE?

我正在创建大量脚本,有时为了检查表是否正在根据需要进行更新,我在运行时写了几个SELECT语句.

在SQL SERVER中,您可以编写如下内容:

SELECT Column1, *
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)

这对于可见性原因很有用,但是在ORACLE中似乎没有用,除了手动写下所有列名之外,我不知道如何实现它.

你怎么能在oracle中做到这一点?

我知道我们不应该在我们的生产脚本等中包含这样的查询.我正在尝试在运行我的脚本时动态使用它.在不同的点上,我更感兴趣的是看到某些列的信息,与其他列相关,但我仍然希望看到所有列.

sql oracle

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

MVC 3.0 ModelBinder bindingContext.ValueProvider.GetValue(key)在集合中绑定时返回null

我是新的使用自定义ModelBinders,我一直在环顾四周,我找不到任何与此特定案例相关的帖子.

我有一个像这样的实体:

 public class DynamicData
    {
       public IList<DynamicDataItem> DynamicDataItems{get;set;}
    }
Run Code Online (Sandbox Code Playgroud)

在视图中我绑定它如下:

@Html.EditorFor(model => model.DynamicDataItems);
Run Code Online (Sandbox Code Playgroud)

我在DynamicDataItems类中有特殊信息,我想以特定的方式检索,所以我创建了自己的Model Binder.

public class DynamicDataItemBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext,
            ModelBindingContext bindingContext)
        {
            var key = bindingContext.ModelName;
            var valueProviderResult = bindingContext.ValueProvider
                .GetValue(key);

            if (valueProviderResult == null ||
                string.IsNullOrEmpty(valueProviderResult
                    .AttemptedValue))
            {
                return null;
            }

            //Here retrieve my own Information

            return DynamicDataItem;
        }
    }
Run Code Online (Sandbox Code Playgroud)

bindingContext.ModelName包含"DynamicDataItem [0]".

如果我使用bindingContext.ValueProvider.ContainsPrefix(key),它返回true,但是当我执行GetValue(key)时,它返回null.如果我检查ValueProvider包含的内容,我会看到在"DynamicDataItem [0]"中有几个项目的Key Starting.我如何处理从当前绑定的项目的所有字段中检索信息("DynamicDataItem [0]")?我应该逐一检索它们吗?像这样:

 var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
 var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
Run Code Online (Sandbox Code Playgroud)

我将非常感谢您给我的任何指导.

c# asp.net-mvc modelbinder

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

将TextBox绑定到Nullable Double?

我想绑定一个Double?到TextBox,我遇到了问题,因为当用户清空文本框时,会发生验证.我认为我的应用程序在我找不到的某个地方进行了验证,所以我创建了一个快速应用程序来测试.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModel() {Value = 3, Value2 = null};
    }
}

public class ViewModel
{
    public double Value { get; set; }
    public double? Value2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

xaml

    <StackPanel Grid.Row="0" Orientation="Horizontal" Margin="5" Height="20px">
        <TextBlock Margin="0,0,5,0">Double:</TextBlock>
        <TextBox Width="50px" Text="{Binding Value}"></TextBox>
    </StackPanel>
    <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="5" Height="20px">
        <TextBlock Margin="0,0,5,0">Double?:</TextBlock>
        <TextBox Width="50px" Text="{Binding Value2}"></TextBox>
    </StackPanel>
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时绑定到Value2的TextBox为空,但如果我键入一个值然后删除它,当TextBox失去焦点时它会显示错误.它只会在我键入值时消失.

我发现这篇文章建议使用一个字符串,但他最初使用的是双倍而不是双倍?

我怎样才能做到这一点?是使用字符串的唯一方法吗?

绑定到双倍似乎很奇怪不允许我设置空值.

c# wpf

10
推荐指数
1
解决办法
2606
查看次数

为什么我会得到PLS-00302:组件必须在它存在时声明?

我正在使用Oracle 10.2.

我正在使用一些脚本将一些ORACLE对象从一个SCHEMA(S1)移动到另一个(S2).我正在创建具有DBA角色的功能.移动时,我的一个功能变得无效,但我不明白为什么.它的代码如下:

my_func,并将

CREATE OR REPLACE FUNCTION S2."MY_FUNC" RETURN VARCHAR2 IS
   something VARCHAR2;
   othervar VARCHAR2 (50):= 'TEST';   
BEGIN
   something := S2.MY_FUNC2();
    /*some code*/
    return othervar;
END;
/
Run Code Online (Sandbox Code Playgroud)

如果我使用MY_FUNC2没有架构,它的工作原理:
something := MY_FUNC2();而不是 something := S2.MY_FUNC2();

My_FUNC2

CREATE OR REPLACE FUNCTION S2."MY_FUNC2" RETURN VARCHAR2 IS
       something BOOLEAN;
       othervar VARCHAR2 (50) := 'TEST2';           
    BEGIN
       /*some code*/
        return othervar;
    END;
    /
Run Code Online (Sandbox Code Playgroud)

MY_FUNC2有一个这样的同义词:

 CREATE OR REPLACE PUBLIC SYNONYM "MY_FUNC2" FOR "S2"."MY_FUNC2"
Run Code Online (Sandbox Code Playgroud)

MY_FUNC 编译错误:

PLS-00302:必须声明组件'MY_FUNC2'

我不明白为什么我得到这个错误,当我的函数在其他模式(S1)中时,它们具有完全相同的结构并且同义词创建完全相同(但指向S1)并且MY_FUNC编译良好.

我最初没有创建这个函数和同义词.是否有可能我在S2中缺少某些特权,所以MY_FUNC可以正常工作吗?

oracle plsql oracle10g

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

如何在网格中设置列的右边框?

我有一个像这样的网格:

<Grid>     
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="4*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>


        <TextBlock Grid.Row="0" Grid.Column="0">Row 0, Column 1</TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0">Row 1, Column 1</TextBlock>
        <TextBlock Grid.Row="2" Grid.Column="0">Row 2, Column 1</TextBlock>
        <TextBlock Grid.Row="3" Grid.Column="0">Row 3, Column 1</TextBlock>

        <TextBlock Grid.Row="0" Grid.Column="1" Grid.RowSpan="4">Column 1</TextBlock>
    </Grid>
Run Code Online (Sandbox Code Playgroud)

我不会在实际应用程序中实际使用TexBlocks,我用它们来使示例更容易.基本上我想设置从第1列中删除第0列中所有内容的边框.

你是怎样做的?

wpf xaml

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

正则表达式以匹配数字与十进制分隔符和可选的千位分隔符

我需要使用小数分隔符和千位分隔符来验证数字是否有效.我需要一个正则表达式,因为当前的代码,我没有使用正则表达式不能正常工作,我的目标是解决它.

所以以下组合是合法的(使用.小数分隔符和,千分隔符)

  • 10000
  • 亿
  • 100,000,000.345345
  • 10000.689

但以下不合法:

  • 10000,000,000.34534

基本上我想要正确使用十进制和千位分隔符或根本没有它们的数字,但不是无效的组合.我环顾四周,到目前为止,我找到了这篇文章.当数字有十进制分隔符和千位分隔符时,它有一个很好的正则表达式匹配,但是当我尝试添加其他选项(仅带小数分隔符或数字整数的数字)时,我打破了表达式.

我决定也许我可以捕获与或匹配规则的组,因此数字匹配一个表达式或另一个表达式如下:

^([+-]?[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?)|(((\d)*)+?(\.\d))|(\d*)$
Run Code Online (Sandbox Code Playgroud)

第一组是从另一个帖子的表达,第二组我认为用小数分隔符覆盖数字,最后一个是整数,但它不起作用.

例如,这些数字不匹配:

  • 10000000.56
  • 千万

我认为这个问题正在发生,因为它总是测试第一组,但我不确定如何正确使用组,因此它匹配其中任何一个.另外我想我会把 - +标志放在错误的地方.

我做了很多搜索,找不到一个正常工作的表达.从建议的:

正则表达式与小数号码和千周分隔符

  • ((\d){1,3})+([,][\d]{3})*([.](\d)*)? - >它错误地捕获了10000000和10,000,000.
  • ^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\d+)?$ - > 10000000失败
  • /^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/ - > 10000000失败
  • ((\d){1,3})+([,][\d]{3})*([.](\d)*)? - > -100.03失败

可以在正则表达式中使用OR而不捕获所包含的内容吗?帖子不是重复的,它解释了可以帮助我解决问题的东西,但它不是重复的,特别是因为我也有+ - 符号的问题.此外,我的问题涵盖了一个对我来说不是特别的问题,这是许多人面临的问题,但从我迄今为止发现的实现来看,没有任何问题.

RegEx结果数字值有或没有千位分隔符发布

  • ^-?([0-9]{1,3}\.?)+$ - >它失败了-1000但不是100.00.3而不是100.00.3
  • ^-?(?!0)(?:\d+|\d{1,3}(?:\.\d{3})+)$ - > -100.03失败

regex

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