小编Ste*_*ler的帖子

Microsoft Visual Studio 2012中的错误:未找到与约束匹配的导出

当我在VS2012中打开我的项目时,我收到了一个错误

找不到符合约束条件的导出:

ContractName
Microsoft.VisualStudio.Utilities.IContentTypeRegistryService
RequiredTypeIdentity
Microsoft.VisualStudio.Utilities.IContentTypeRegistryService

请在继续之前纠正.(您可以重命名当前的web.config并添加一个新的).

为什么会发生这种情况,有人可以建议解决方案吗?

visual-studio-2012

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

在按F12转到Visual Studio 2015/C中的定义时出错

当我在Visual Studio 2015中按F12(转到定义)时,我收到以下错误消息:

发生一个或多个错误

我已经尝试过:

  1. 关闭解决方案
  2. 正在删除.suo文件
  3. 重建解决方案

..但是没有解决它.

请帮忙.

c# visual-studio-2015

34
推荐指数
2
解决办法
6654
查看次数

GetExportedTypes()FileNotFoundException:找不到程序集

我的任务:在dll或exe文件中查找所有表单(WindowsForm或WPF,无关紧要)并返回该列表.从理论上说是有效的(意思是:如果我有一个带有WPF或WindowsForm的程序集,我的代码会设法获取所有表单,文本框,标签等).当谈到"真正的"组件时,它会失败.我为每个"自定义"程序集调用GetExportedTypes()时得到FileNotFound异常(找到.NET程序集,没有问题).我已经使用GetReferencedAssemblies()来加载引用的程序集(Reflection.Assembly.LoadFrom),是的,它确实有效(找到并加载到AppDomain中的所有程序集),但它没有帮助.

我检查了版本号(它们匹配),我将我的可执行文件和程序集复制到一个带有所有引用程序集的目录中,不起作用.

这是我的代码,也许有人弄清楚我(显然)做错了什么:

foreach (AssemblyName reference in selectedAssembly.GetReferencedAssemblies())
{
      if (System.IO.File.Exists(
             System.IO.Path.GetDirectoryName(selectedAssembly.Location) + 
                @"\" + reference.Name + ".dll"))
      {
         System.Reflection.Assembly.LoadFrom(
            System.IO.Path.GetDirectoryName(selectedAssembly.Location) + 
               @"\" + reference.Name + ".dll");
      }
      else if (System.IO.File.Exists(@"C:\dll\" + reference.Name + ".dll"))
      {
         System.Reflection.Assembly.LoadFrom(@"C:\dll\" + reference.Name + ".dll");
      }
      else
      {
         System.Reflection.Assembly.ReflectionOnlyLoad(reference.FullName);
      }

      selectedAssembly.GetExportedTypes();       
}
Run Code Online (Sandbox Code Playgroud)

首先检查引用的dll是否存在于程序集所在的目录中,如果没有检查它是否存在于C:\ dll中,如果它不存在则尝试使用GAC.它确实有效,我没有错误,但是一旦我来到GetExportedTypes它就会在第一个自定义库上出现FileNotFound异常.

*编辑1"真正的程序集"是什么意思:我的意思是更复杂的程序集,并且引用了非标准的.NET库/程序集


感谢fuslogvw.exe Hans Passant的提示,但你的意思是"用这样的代码"?


好吧我使用了fuslogvw.exe,并且我为"selectedAssembly"引用的每个dll都有两个例外.第一个说的是"绑定从LoadFrom-context开始,系统拥有的图像不在LoadFrom-Context中搜索"

另一个logentry说找不到selectedAssembly引用的dll,它试图从应用程序的基本路径和下面的所有目录下载它...但不是从它的实际位置...所以,关键问题:我该怎么办将Load-context更改为LoadFrom?为什么.NET如此顽固?我的意思是程序集在AppDomain中加载,它不应该关心程序集的实际位置.


好的问题解决了.以下是解决方案:http: //ayende.com/blog/1376/solving-the-assembly-load-context-problem

我将它实现到我现有的类中(删除了static-keyword并将Init方法的主体放入我的方法中),编译它并且它有效.

谢谢你的帮助.

c# filenotfoundexception

6
推荐指数
1
解决办法
4632
查看次数

SqlConnections,Parallel.For,一个旧的C#应用​​程序和随机挂起初始化SqlConnections

我的问题:本周早些时候,我完成了加速我们计划任务的任务.我看着它,立即想到了在该任务中使用并行foreach循环的功能.

我实现了它,经历了函数(包括所有子函数)并更改了SqlConnections(以及其他东西),因此它可以并行运行.我开始了整个事情,一切顺利而且快速(单独将这项任务的时间缩短了约45%)

现在,昨天我们想用更多的数据尝试同样的事情......我遇到了一些奇怪的问题:每当调用并行函数时,它就完成了它的工作......但有时其中一个线程会挂起至少4个分钟(超时设置为一分钟,用于连接AND命令).

如果我在此期间暂停程序,我看到只有一个线程仍在该循环中处于活动状态并且它会挂起

connection.Open()
Run Code Online (Sandbox Code Playgroud)

大约4分钟之后,程序只是继续运行而不会抛出错误(除了输出框中的消息,说某个地方发生异常,但我的应用程序没有捕获它,而是在SqlConnection/SqlCommand对象中的某处).

我可以杀死MSSQLServer上的所有连接,没有任何事情发生,MSSQLServer在这4分钟内什么都不做,所有连接都是空闲的.

这是用于将Update/Insert/Delete语句发送到数据库的过程:

int i = 80;
bool itDidntWork = true;
Random random = new Random();
while (itDidntWork && i > 0)
{
    try
    {
        using (SqlConnection connection = new SqlConnection(sqlConnectionString))
        {
            connection.Open();
            lock (connection)
            {
                command.Connection = connection;
                command.ExecuteNonQuery();
            }

            itDidntWork = false;
        }
    }
    catch (Exception ex)
    {
        if (ex is SqlException && ((SqlException)ex).ErrorCode == -2146232060)
        {
            Thread.Sleep(random.Next(500, 5000));
        }
        else
        {
            SqlConnection.ClearAllPools();
        }

        Thread.Sleep(random.Next(50, 110));
        i--;
        if (i == 0)
        {
            writeError(ex); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading sqlconnection hang sql-server-2008-r2

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

将DataGridComboBoxColumn绑定到C#中的DataGrid的ItemsSource

我正在以DataGrid编程方式创建并且也必须支持ComboBoxColumns.

在我创建之后DataGrid,我将它设置ItemSource为一个类型集合的集合BindableList<BindableDictionary>.BindableDictionary是一种自定义类型.每个BindableDictionary代表一个元组.它的关键是始终是列的名称,它的值是一个自定义类,它包含一个名为ActualValue,Dictionary<T, string>被调用的通用属性,AllowedValues以及一个boolean确定是否AllowedValues将用于构建一个ComboBoxColumn或"普通"列的自定义属性.该类实现INotifyPropertyChangedINotifyPropertyChanging.

除了ComboBoxColumn之外,那些东西还可以.我对ComboBoxColumn的问题在于我不知道如何让它使用该AllowedValues对象来填充它的ItemList 使用该ActualValue属性ValueAllowedValues BindableDictionary填充textarea中选择正确的.

例如,这是我绑定基于文本的列的方式:

table.Columns.Add(new DataGridTextColumn() { Header = column.GUIName, DisplayIndex = column.Position, Binding = new Binding(column.Name + ".ActualValue") { UpdateSourceTrigger = UpdateSourceTrigger.Default, Mode = BindingMode.TwoWay, NotifyOnTargetUpdated = true, NotifyOnSourceUpdated = true, UpdateSourceExceptionFilter = new UpdateSourceExceptionFilterCallback(BindingExceptionHandler) } }); …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf datagrid wpfdatagrid

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

Doxygen不会为大多数方法/函数生成调用图

这似乎是一个错误.链接到bugreport:https://bugzilla.gnome.org/show_bug.cgi id = 731363

我正在使用Doxygen 1.8.7和Graphviz 2.38.我将Doxygen配置为扫描更大的项目并将文档生成为HTML页面.

现在,我想要/需要那里的调用者/被调用的图形,并且我将每个与它有关的标志设置为"是".但结果仍然相同:对于4种方法,生成一个被调用/调用者图,但不生成其他方法.

我检查了Doxygen的日志文件,发现了4个这样的条目: Generating caller graph for function [...]

对于其他每个班级,只有 Generating docs for compound [...]...

有没有办法得到更详细的日志/原因为什么doxygen拒绝为函数生成调用者图表?

我的doxygen配置:

# Doxyfile 1.8.7

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING      = UTF-8
PROJECT_NAME           = testproject
PROJECT_NUMBER         = 
PROJECT_BRIEF          = 
PROJECT_LOGO           = 
OUTPUT_DIRECTORY       = "D:/path/to/outputdirectory"
CREATE_SUBDIRS         = NO
ALLOW_UNICODE_NAMES    = NO
OUTPUT_LANGUAGE        = English
BRIEF_MEMBER_DESC      = YES
REPEAT_BRIEF           = YES
ABBREVIATE_BRIEF       = "The $name class" \
                         "The $name widget" \
                         "The $name file" \ …
Run Code Online (Sandbox Code Playgroud)

c# doxygen call-graph

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

远程调试时无法使用诊断工具

我遇到了在远程调试期间无法使用诊断工具的问题。如果我在本地机器上启动我的程序,一切都很好。

在确保我的域用户在目标机器上具有调试权限(在远程调试工具中配置)后,我将 Visual Studio 附加到远程机器上的运行进程。然后我切换到诊断窗口,只看到一条错误消息

在此处输入图片说明.

在网上搜索后,我找到了一种获得详细输出的方法并得到了这个:

Debug --- Diagnostics Hub Components Loader --- Component 44d04ed9-f786-458c-93a9-7207a3cc52e1 (Microsoft.DiagnosticsHub.Components.LazyCollectorFactory) has been loaded.
Debug --- Diagnostics Hub Components Loader --- Component 28b3f966-03cc-4632-ae04-0861ef17555a (Microsoft.DiagnosticsHub.Components.LazyCollectorFactory) has been loaded.
Debug --- Diagnostics Hub Components Loader --- Component 113e964e-152f-45e7-b70e-1e5482802d0c (Microsoft.DiagnosticsHub.Diagnostics.OutputWindowLogger) has been loaded.
Debug --- Diagnostics Hub Components Loader --- Component 72089e7a-a3c8-4652-9817-f33c8149affc (Microsoft.DiagnosticsHub.Components.LazyCollectorFactory) has been loaded.
Debug --- Diagnostics Hub Components Loader --- Component 42d07b97-c049-403e-bd24-6c55fb096d1a (Microsoft.DiagnosticsHub.VisualStudio.Targets.ExecutableTargetProviderFactory) has been loaded.
Debug --- Diagnostics Hub Components Loader --- Component …
Run Code Online (Sandbox Code Playgroud)

performance diagnostics remote-debugging visual-studio-2015

5
推荐指数
0
解决办法
1301
查看次数

混合模式使用子进程调试电源工具调试Python/C#

我正在尝试调试(命中断点)一个python脚本,它通过C#中的新进程执行.

我已经安装了Child Process Debugging Power工具,因为该工具据说允许人们这样做.

根据其文档,它需要两件事:

  1. 必须使用本机调试enigne调试父进程
  2. 父进程必须使用CreateProcess或CreateProcessAsUser Win32 API启动子进程.

我的流程创建如下:

ProcessStartInfo startInfo = new ProcessStartInfo();
Process p = new Process();

startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = false;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardInput = false;
...
p.StartInfo = startInfo;
p.EnableRaisingEvents = true;
p.Start();
Run Code Online (Sandbox Code Playgroud)

据我所知,只要我使用

UseShellExecute = false; 
Run Code Online (Sandbox Code Playgroud)

应该使用CreateProcess启动该过程.(要求2)

在我的项目中,我还启用了本机代码调试.(Req.1)

我还在我的符号列表中包含了python.pdb和python36.pdb.但似乎我找不到python3.pdb

'python.exe' (Win32): Loaded 'C:\...\Python36\python.exe'. Symbols loaded.
'python.exe' (Win32): Loaded 'C:\...\Python36\python36.dll'. Symbols loaded.
'python.exe' (Win32): Loaded 'C:\...\python3.dll'. Cannot find or open the PDB file.
Run Code Online (Sandbox Code Playgroud)

当我使用调试符号安装python时,这不包括在内,我似乎没有在其他任何地方找到它.

我正在使用2017年的视觉工作室,没有断点被击中.

.net c# python visual-studio visual-studio-debugging

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

东西阻塞了我的记忆,程序挂起在GC.Collect()或GC.GetTotalAmountOfMemory(true)

无论何时我打电话给整个节目GC.Collect()GC.GetTotalAmountOfMemory(true)整个节目都挂了.现在,我知道你要说什么:不要打电话GC.Collect()给GC照顾自己.问题是:在我的情况下,内存中没有东西,GC无法摆脱它.

我不知道它可能是什么(项目是大/旧).我希望有人知道如何获取有关GC尝试做什么的信息(显然不能做),以便我可以搜索问题或者像内存分析器这样的东西在这里有任何帮助(我目前有ANTS)安装)和我应该搜索什么.

*编辑我完全忘记的东西:有时当我调用GC的两种方法之一时,内存使用量增加~10千字节/秒

*edit2我要纠正自己:GC.Collect()运行得很好.只有GC.GetTotalMemory(true)挂起.GC.GetTotalMemory(false)也可以正常工作.

*edit3和是,你们中的一些人已经说过了:它似乎是某个地方的终结者.当我运行WaitForPendingFinalizers()时,它只是坐在那里,什么都不做.

好了,现在我完全糊涂了:当我输入一个GC.GetTotalMemor(true)GC.WaitForPendingFinalizers()到Visual Studio的即时窗口后,我暂停调试器,程序挂起(这就是我所做的全部时间......我现在觉得自己很蠢).当我将它添加到我通常的源代码并编译它时,它工作得很好.

抱歉整个模糊,似乎记忆漏洞有另一个原因.

c# garbage-collection memory-leaks block

4
推荐指数
1
解决办法
4088
查看次数

Google Chrome扩展程序 - 如何从顶级网站列表中删除条目(Omnibox建议)?

我可以轻松删除Chrome历史记录中的条目:

http://code.google.com/chrome/extensions/history.html#method-deleteUrl

但删除的网页仍然显示在地址栏中的建议网站(称为Omnibox)中.我发现,这些条目都在.config/google-chrome/Default/Top\ Sites.如何从此列表中删除单个条目(通过Google Chrome API)?

address-bar autocomplete google-chrome-extension

4
推荐指数
1
解决办法
4312
查看次数

在VS 2013 Professional Update 4中无法再打开.cs文件

我遇到一个问题,一天之后我无法在Visual Studio 2013中打开.cs文件.

它开始于星期一:我打开了一个现有的解决方案,并试图打开Program.cs文件,但遇到了以下错误消息(粗略翻译):

没有找到符合约束条件的出口:

ContractName

Microsoft.VisualStudio.Utilities.IContentTypeRegistryService

RequiredTypeIdentity

Microsoft.VisualStudio.Utilities.IContentTypeRegistryService

我尝试在不同的解决方案中打开.cs文件,并始终得到相同的消息.唯一的例外是:在首次发生异常的Visual Studio实例之前打开的任何Visual Studio实例都不受此影响.

我设法通过选择修复Visual Studio安装并重新启动来实现它,但这只能工作到第二天.

我试着搜索那条消息,但到目前为止一无所获.

c# exception visual-studio-2013

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