小编flo*_*ele的帖子

MSBuild:升级到VS 2010后出现TlbImp错误

自从我的项目升级到VS2010,包括使用MSBuild v4而不是3.5(并且没有进行任何其他更改),我得到以下构建错误,并且不知道如何修复它(从CC.NET登录):

  <target name="ResolveComReferences" success="false">
   <message level="high"><![CDATA[C:\Programme\Microsoft SDKs\Windows\v7.0A\bin\TlbImp.exe c:\Assemblies\NMSDVDXU.dll /namespace:NMSDVDXLib /machine:X64 /out:obj\x64\Release\Interop.NMSDVDXLib.dll /sysarray /transform:DispRet /reference:c:\Assemblies\Bass.Net.dll /reference:c:\Assemblies\LogicNP.FileView.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:C:\WINDOWS\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll ]]></message>
   <error code="TI0000" file="TlbImp"><![CDATA[A single valid machine type compatible with the input type library must be specified.]]></error>
   <warning code="MSB3283" file="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets" line="1558" column="9"><![CDATA[Die Wrapperassembly für die Typbibliothek "NMSDVDXLib" wurde nicht gefunden.]]></warning>
   <message level="high"><![CDATA[C:\Programme\Microsoft SDKs\Windows\v7.0A\bin\TlbImp.exe c:\Assemblies\StarBurnX12.dll /namespace:RocketDivision.StarBurnX /machine:X64 /out:obj\x64\Release\Interop.RocketDivision.StarBurnX.dll /sysarray /transform:DispRet /reference:c:\Assemblies\Bass.Net.dll /reference:c:\Assemblies\LogicNP.FileView.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:C:\WINDOWS\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll ]]></message>
   <error code="TI0000" file="TlbImp"><![CDATA[A single …
Run Code Online (Sandbox Code Playgroud)

.net c# msbuild

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

如何将多个清单文件嵌入/合并到C#应用程序中?

在Visual Studio中,您可以在C++项目中设置选项"Additional Manifest Files",以便将其他清单文件合并到默认应用程序清单中.

我们将此选项与共享的"兼容性清单"一起使用,该清单仅包含受支持的操作系统版本列表:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
      <application>
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!--app support for Windows Vista -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!--app support for Windows 7 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> <!--app support for Windows 8 -->
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!--app support for Windows 8.1 -->
      </application> 
    </compatibility>
</assembly>
Run Code Online (Sandbox Code Playgroud)

现在我们想将该共享清单嵌入到现有的WinForms/WPF应用程序中,以便它与现有的应用程序清单文件合并.这可能与C#项目有关吗?我们希望避免在每个项目中定义此操作系统列表.

c# manifest visual-studio

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

如何在代码中访问x:Name-property - 对于非FrameworkElement对象?

另一个问题类似,我想通过代码访问对象的x:Name属性,在这种情况下,有问题的对象不是a FrameworkElement,因此没有Name属性.我也无法访问成员变量.

在我的情况下,我有一个ListView带有命名列,并希望扩展ListView类,以便它保持列布局.对于这个功能,我需要命名列,因为其他原因重新使用我需要设置的x:Name属性是有意义的,而不是添加附加的"ColumnName"属性.

我目前的"解决方案":

<GridViewColumn Header="X" localControls:ExtendedListView.ColumnName="iconColumn" />
Run Code Online (Sandbox Code Playgroud)

期望:

<GridViewColumn Header="X" x:Name="iconColumn" />
Run Code Online (Sandbox Code Playgroud)

那么有可能以某种方式获得"x:Name"值吗?

.net c# wpf xaml

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

WPF:如何使文本框动态调整大小但阻止自动调整大小?

我知道在WPF中自动调整文本框的大小有很多问题,但我找不到解决以下问题的方法.

考虑这个简单的窗口:

<Window x:Class="TestVisualBrush.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="470" Width="608">
<ScrollViewer>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <TextBox>Test</TextBox>
        <TextBox MinHeight="100" Grid.Row="1" AcceptsReturn="True" >Test</TextBox>
    </Grid>
</ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)

这实现了我需要的这两个约束:

  1. 此设置将使第二个文本框动态调整大小,以便使用剩余的窗口空间.
  2. 如果窗口对于所需的最小内容大小而言太小ScrollViewer,则ScrollViewer显示滚动条.

但是,当您在第二个文本框中键入太多文本时,会ScrollViewer显示滚动条而不是TextBox.我想阻止文本框增加其高度超出父级Grid最初给出的空间.我不能MaxHeight在这种情况下使用,因为没有适合ActualHeight绑定(据我所见).

有关如何解决此问题的任何建议(最好没有代码隐藏)?

请注意,如果根ScrollViewer的内容对于窗口来说太大,它仍应滚动.

在HTML中我想要的将转换为:

<table height="100%">
 <tr>
    <td><input type="text"></td>
 </tr>
 <tr height="100%"> 
    <td>
          <!-- Uses as much space as it gets, but scrolls if text inside
               gets too large. Makes outer window scroll if too small …
Run Code Online (Sandbox Code Playgroud)

.net wpf layout xaml

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

如何在退出时在CorExitProcess中调试访问冲突0xC0000005?

我们的应用程序(用C++,VS 2010项目编写)在Windows 8之前的所有操作系统上运行良好(现在仍然如此).但是,在Windows 8上,当有序退出应用程序时,会发生访问冲突:

mfc100.dll!_DllMain@12()    <<< Crash here
mfc100.dll!__CRT_INIT@12()  
mfc100.dll!__DllMainCRTStartup@12() 
ntdll.dll!_LdrxCallInitRoutine@16() 
ntdll.dll!LdrpCallInitRoutine() 
ntdll.dll!LdrShutdownProcess()  
ntdll.dll!RtlExitUserProcess()  
kernel32.dll!_ExitProcessImplementation@4() 
mscoreei.dll!RuntimeDesc::ShutdownAllActiveRuntimes(unsigned int,class RuntimeDesc *,enum RuntimeDesc::ShutdownCompatMode)  
mscoreei.dll!_CorExitProcess@4()    
mscoree.dll!_ShellShim_CorExitProcess@4()   
msvcr100d.dll!__crtCorExitProcess(int status) line693   C
msvcr100d.dll!__crtExitProcess(int status) line 699 C
msvcr100d.dll!doexit(int code, int quick, int retcaller) line 621   C
msvcr100d.dll!exit(int code) Zeile 393  C
my.exe!__tmainCRTStartup() Zeile 568    C
my.exe!WinMainCRTStartup() Zeile 371    C
kernel32.dll!@BaseThreadInitThunk@12()  
ntdll.dll!__RtlUserThreadStart()    
ntdll.dll!__RtlUserThreadStart@8()  
Run Code Online (Sandbox Code Playgroud)

在MSDN论坛主题中,建议GC.Collect()在退出之前运行,但是在退出之前不久我就不能对这样的调用产生任何影响.

关于如何调试问题,我有点不知所措.据我所知,CorExitProcess负责清理应用程序的托管资源.那么这可能是托管组件中的错误吗?
或者是否更有可能某些函数指针_DllMain被覆盖/损坏?如果是这样,我如何在相关地址设置数据断点?有一篇文章解释了如何调试类似的问题,但是他在自己的DLL中遇到了这个问题,所以他实际上可以找到问题的确切来源,而我却无法解决.

有什么建议?

编辑:其他信息,windbg !analyze -v:

FAULTING_IP: 
mfc100+258e6c
64298e6c 8b4654          mov     eax,dword …
Run Code Online (Sandbox Code Playgroud)

.net c++ debugging access-violation

6
推荐指数
2
解决办法
7311
查看次数

如何在类中两次使用“覆盖字符串 ToS​​tring()”方法

我已将这种方法用于我的类中定义的两个属性。属性是

public bool HasImage { get; set; }
public DateTimeOffset? StartDate { get; set; }


public override string ToString()
{
    string value = "";
    if (StartDate.HasValue)
    {
        if (StartDate == DateTime.Today.Date)
            value = "1 Day";
        else if (StartDate < DateTime.Today.Date)
            value = "Past Due";
    }
    return value;
}
Run Code Online (Sandbox Code Playgroud)

如何对HasImage属性使用这个方法,这里我无法删除StartDate属性的方法。将结果导出到excel时会调用以上方法。

.net c# boolean tostring

5
推荐指数
2
解决办法
3721
查看次数

是否可以在进程中禁用setlocale()?

我们目前面临的问题是,在使用Windows文件打开/保存对话框时加载了一个外部组件(我们遗憾地不知道哪一个),有些系统可能会通过调用来更改进程的语言环境setlocale(LC_ALL, "").

这会混淆我们的应用程序,因为它依赖于所设置的标准语言环境(在运行时期间我们自己的任何组件都不会更改).

因此,我们需要确保setlocale()在进程内调用时从未产生任何影响,或者我们需要在调用此函数时检测,然后将语言环境重置为默认的"C"语言环境.

有没有办法实现这些目标?

c++ setlocale

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

如何确定ResourceDictionary键的顺序?

我有以下ResourceDictionary(缩短):

<ResourceDictionary>
  <Fluent:RibbonContextualTabGroup Header="Dokument" x:Key="dokumentRibbonGroup" x:Name="dokumentRibbonGroup" />
  <Fluent:RibbonTabItem x:Key="dokumentRibbonTab" Header="Start" />
  <Fluent:RibbonTabItem x:Key="ueberpruefenRibbonTab" Header="Überprüfen" />
  <Fluent:RibbonTabItem x:Key="austauschRibbonTab" Header="Austausch" />
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

当我访问Keys字典的属性时,键按以下顺序:

dokumentRibbonTab
austauschRibbonTab
ueberpruefenRibbonTab
dokumentRibbonGroup

我无法理解那个顺序.它不是按字母顺序排列的,不是修订版,尤其不是原始订单.有人有提示吗?或者甚至更好,关于如何指定项目顺序的建议ResourceDictionary

c# wpf xaml resourcedictionary

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