Tag: 参考

Visual Studio项目:如何仅为一个配置包含引用?

环境:VS2008 C#项目 我需要构建我的应用程序,以便在2种不同的环境中使用。 在其中一个环境中,我需要使用第三方DLL程序集。 我可以使用#if块来隔离使用此DLL的代码。 但是,如何有条件地在CS项目文件中包含对DLL的引用? 编辑:womp在他的评论中有一个很好的观点。 我变成了一个单独的问题 :如果从未调用引用的DLL,它是否会被加载? TIA,

我可以在像C ++这样的C#函数中使用引用吗?

在C ++中我可以这样做: int flag=0,int1=0,int2=1; int &iRef = (flag==0?int1:int2); iRef +=1; 具有int1增加的效果。 我必须修改一些旧的c#代码,如果我可以做类似的事情,那将会非常有用,但我在考虑……也许不是。 任何人?

获取Type中使用的程序集路径

我需要一个方法,它接受一个Type并返回该类型中使用的所有程序集的路径。 我写了这个: public static IEnumerable GetReferencesAssembliesPaths(this Type type) { yield return type.Assembly.Location; foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies()) { yield return Assembly.Load(assemblyName).Location; } } 通常这种方法可以胜任,但也有一些缺点: 我没有找到如何从类型本身获取引用的程序集/类型,所以我使用了type.Assembly.GetReferencedAssemblies()并获得了整个程序集的引用,而不仅仅是那些与类型相关的引用。 type.Assembly.GetReferencedAssemblies()返回AssemblyName,没有location / path / filepath属性。 要获取location属性,我首先使用Assembly.Load()然后使用location属性。 我不希望加载程序集获取它们的路径,因为它们没有必要使用,并且因为Assembly.Load()可能会因FileNotFoundException或BadImageFormatException而失败。

从csproj文件中读取引用列表

有没有人知道以编程方式读取VS2008 csproj文件中的引用列表的方法? MSBuild似乎不支持此function。 我试图通过将csproj文件加载到XmlDocument来读取节点,但XPath搜索不返回任何节点。 我正在使用以下代码: System.Xml.XmlDocument projDefinition = new System.Xml.XmlDocument(); projDefinition.Load(fullProjectPath); System.Xml.XPath.XPathNavigator navigator = projDefinition.CreateNavigator(); System.Xml.XPath.XPathNodeIterator iterator = navigator.Select(@”/Project/ItemGroup”); while (iterator.MoveNext()) { Console.WriteLine(iterator.Current.Name); } 如果我可以获取ItemGroups列表,我可以确定它是否包含参考信息。

在不重新编译项目的情况下升级C#项目中的引用dll

我需要使用C#应用程序的内置版本并更改其中一个引用dll。 最好的方法是什么,我在引用dll上关闭了特定的版本,但是当我测试用新版本替换dll时,我得到“无法加载文件或程序集XXXXX,版本= XXXXX。是有一种方法可以阻止加载器关心dll的版本,这样dll只会尝试加载?

通过C#通过Outlook 2010发送电子邮件

我正在尝试从我的C#控制台应用程序内部发送电子邮件。 我添加了引用和使用语句,但似乎我没有添加我需要的一切。 这是我第一次尝试这样做,所以我觉得有些东西我已经忘记了。 我从MSDN网站获得了这段代码片段http://msdn.microsoft.com/en-us/library/vstudio/ms269113(v=vs.100).aspx 这是我在VS 2010中遇到问题的代码 using System; using System.Configuration; using System.IO; using System.Net; using System.Net.Mail; using System.Runtime.InteropServices; using Outlook = Microsoft.Office.Interop.Outlook; using Office = Microsoft.Office.Core; namespace FileOrganizer { class Program { private void CreateMailItem() { //Outlook.MailItem mailItem = (Outlook.MailItem) // this.Application.CreateItem(Outlook.OlItemType.olMailItem); Outlook.Application app = new Outlook.Application(); Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem); mailItem.Subject = “This is […]

C#’ref’关键字,性能

如果你有一个Bitmap对象需要传递给众多方法(大约10个),最后到一个事件,它将在它被使用后最终被处理掉,是否(性能明智)将它传递给每一个那些方法通过引用而不是价值? 按值传递,对象被复制,而不是通过引用传递。 (在这种情况下,性能至关重要。应用程序需要尽可能快地运行。)

程序集绑定重定向不起作用

我正在尝试使用以下app.config设置程序集绑定重定向: 我在GAC中使用版本9.0.242.0的计算机上运行该程序,并使用指定的公钥令牌。 CLR似乎甚至没有尝试重定向绑定以使用该版本。 这是我在fuslogvw.exe中得到的: LOG: This bind starts in default load context. LOG: Using application configuration file: \Debug\AssemblyRedirectPOC.exe.Config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. LOG: Post-policy reference: Microsoft.AnalysisServices, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91 LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices.DLL. LOG: Attempting download of new URL /Debug/Microsoft.AnalysisServices/Microsoft.AnalysisServices.DLL. LOG: Attempting download of […]

C# – 获取对象的引用数

我正在尝试为我正在写的小爱好游戏编写一个简单的资源管理器。 此资源管理器需要执行的任务之一是卸载未使用的资源。 我可以想到以两种方式做到这一点: 当一个对象不再需要对资源的引用时,它必须调用资源管理器的方法来表示它不再使用它; 要么 当一个对象不再需要对该资源的引用时,它只是将其设置为null。 然后,当要求资源管理器卸载未使用的资源时,它会获取每个资源的引用计数(通过reflection?)。 如果引用计数为1(资源管理器将具有对资源的引用),则卸载资源。 有没有办法在C#中实现第二个解决方案? 谢谢。

使用同一DLL的多个版本

我的任务是为应用程序创建一个新模块,因此,我正在为项目添加新的DLL。 这一切都很好。 但是,在我的DLL中,我想使用新版本的外部DLL(我无法控制)。 如果我只引用新的DLL并仅使用该DLL,我的代码将起作用,但旧代码将停止运行。 Could not load file or assembly ‘itextsharp, Version=5.0.6.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 我尝试过一个改变DLL名称的简单技巧,但这显然对我来说太天真了,认为它会起作用。 我已经尝试使用外部别名(通过在我的引用中定义它们),但我仍然不知道如何将两个具有相同名称的文件放入一个BIN文件夹中… 我该怎么办?