我安装了VS2010和.NET 4.0,然后编译了一个程序集并使用可用的exe运行gacutil
%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools
Run Code Online (Sandbox Code Playgroud)
可执行文件的输出表示程序集已成功安装在Global Assembly Cache上.但是,当我转到%WINDIR%\assembly文件夹时,我找不到使用.NET Framework 4.0安装的程序集gacutil.
我看过一些帖子说.NET Framework 4.0有一个单独的GAC,但我没有找到它所在的位置.
有人可以帮我查一下在哪里可以看到.NET Framework的全局程序集缓存,因为它曾用于以前的版本(%WINDIR%\assembly)?
我将包含一些单元测试项目的VS2008解决方案转换为VS2010.转换后我尝试编译解决方案,但是我收到以下错误:
命名空间"Microsoft"中不存在类型或命名空间名称"VisualStudio"(您是否缺少程序集引用?)
找不到名称空间声明using Microsoft.VisualStudio.TestTools.UnitTesting;.另外,当我尝试添加新的项目引用时,我找不到Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集.
有谁知道我做错了什么?
我正在尝试运行一个打开XML文件的T4模板,并使用它来生成代码工件.但是,当我尝试运行类似于下面的T4模板时,我收到一条错误消息
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Xml.dll" #>
<#@ assembly name="System.Xml.Linq.dll" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Xml.Linq" #>
<#@ output extension=".cs" #>
namespace ConsoleApplication1
{
<# XElement fragment = XElement.Load("data.xml"); #>
...
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010错误列表显示以下消息
Running transformation: System.IO.FileNotFoundException: Could not find file 'C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\data.xml'.
It is trying to open the file on the path where the TextTemplateFileGenerator custom tool runs. I'd like it to open the file relative …
我习惯使用Toad或PL/Sql Developer for Oracle等工具,我在查询窗口上运行的每个SQL语句都在trasaction范围内自动运行.因此,如果我的SQL语句不正确,或者即使我错过了SQL脚本上的内容,我只能通过单击UI上的按钮来回滚.如果一切按预期工作,我可以点击另一个按钮来提交当前交易.在我提到的那些工具上,我不需要为开始,提交或回滚事务编写SQL语句.每个SQL语句都有一个与之关联的隐式事务.
有没有办法在SQL Server Management Studio 2008上实现相同的功能?
我正在编写一个Windows服务应用程序,需要在执行期间反复序列化和反序列化XML文档.因为我需要序列化和反序列化在编译期间未知的泛型类型(我不知道我需要序列化/反序列化需要多少类型)我想知道保留缓存是否是个好主意我实例化的DataContractSerializer对象用于序列化和反序列化对象.
我问这个问题是因为我知道缓存XmlSerializer类实例是一个好主意,因为它们在内存下创建动态程序集,并且在内存中动态创建的程序集不会被垃圾回收.
我读到DataContractSerializer依赖于轻量级代码生成,但我并不常常了解它的细节.这就是为什么我问这个问题,我需要了解如果我根据需要实例化DataContractSerializer实例,它会导致我像XmlSerializer那样导致内存泄漏?
我选择使用DataContractSerializer而不是XmlSerializer来序列化内部属性.
caching windows-services xml-serialization datacontractserializer
我有一个应用程序将xml文档存储在SQL Server的列中.XML文档的结构类似于下面的结构:
<document>
<item>
...
<phoneNumber>0123456789</phoneNumber>
....
</item>
<item>
...
<phoneNumber>9876543210</phoneNumber>
....
</item>
...
</document>
Run Code Online (Sandbox Code Playgroud)
基本上,此列存储一组客户信息.XML文档可以在<item>元素中包含不同的子元素,但是其中一些子元素包含在所有文档中(例如上例中的<phoneNumber>元素).
这样我就可以在表中包含以下值的一行
<document>
<item>
<firstName>Carlos</firstName>
<lastName>Loth</lastName>
<phoneNumber>0123456789</phoneNumber>
</item>
<item>
<firstName>Alberto</firstName>
<lastName>Tomatis</lastName>
<phoneNumber>987654321</phoneNumber>
</item>
</document>
Run Code Online (Sandbox Code Playgroud)
另一行包含此文档
<document>
<item>
<orderNumber>XYZ</orderNumber>
<phoneNumber>0123456789</phoneNumber>
</item>
<item>
<orderNumber>ABC</orderNumber>
<phoneNumber>987654321</phoneNumber>
</item>
</document>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,是否可以根据document/item/phoneNumber元素在该XML列上创建索引?我需要执行一个查询,根据phoneNumber信息返回存储在其他"固定已知"列中的信息.
有什么建议或想法吗?
在此先感谢,Carlos Loth.
我试图理解从C#代码实现COM接口的正确原因是什么.当接口不从其他基接口继承时,它很简单.像这个:
[ComImport, Guid("2047E320-F2A9-11CE-AE65-08002B2E1262"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IShellFolderViewCB
{
long MessageSFVCB(uint uMsg, int wParam, int lParam);
}
Run Code Online (Sandbox Code Playgroud)
然而,当我需要实现从其他COM接口继承的接口时,事情开始变得疲惫不堪.例如,如果我实现IPersistFolder2继承的接口,就像我通常在C#代码上IPersistFolder继承的IPersist那样:
[ComImport, Guid("0000010c-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPersist
{
void GetClassID([Out] out Guid classID);
}
[ComImport, Guid("000214EA-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPersistFolder : IPersist
{
void Initialize([In] IntPtr pidl);
}
[ComImport, Guid("1AC3D9F0-175C-11d1-95BE-00609797EA4F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPersistFolder2 : IPersistFolder
{
void GetCurFolder([Out] out IntPtr ppidl);
}
Run Code Online (Sandbox Code Playgroud)
操作系统无法调用我的对象实现上的方法.当我调试时,我可以看到我的IPersistFolder2实现的构造函数被多次调用,但是我实现的接口方法没有被调用.我正在实施IPersistFolder2如下:
[Guid("A4603CDB-EC86-4E40-80FE-25D5F5FA467D")]
public class PersistFolder: IPersistFolder2
{
void IPersistFolder2.GetClassID(ref Guid classID) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为以下方法定义P/Invoke签名(在中定义propsys.h)
PSSTDAPI PSRegisterPropertySchema(
__in PCWSTR pszPath);
Run Code Online (Sandbox Code Playgroud)
我看到的WinNT.h那PCWSTR是它的别名LPCWSTR为
typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;
Run Code Online (Sandbox Code Playgroud)
这PSSTDAPI是别的HRESULT
那么该PSRegisterPropertySchema方法的P/Invoke签名应该如何呢?
有谁知道C#编译器使用以下代码做什么?
dict = new Dictionary<int, string>()
{
{ 1, "value1" },
{ 2, "value2" }
}
Run Code Online (Sandbox Code Playgroud)
它是否创建KeyValuePair实例并调用Add方法或执行更优化的操作尚不清楚.你们中有谁都知道吗?
我没有创建Power Shell脚本的经验,我正在尝试实例化提供特定文本编码的System.IO.StreamWriter类.我正在尝试这样做:
$file = New-Object System.IO.StreamWriter("sample.txt", [System.Text.Encoding]::Default, 4096)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
New-Object : Cannot find an overload for "StreamWriter" and the argument count: "3".
At line:1 char:18
+ $out = New-Object <<<< System.IO.StreamWriter("sample.txt", [System.Text.Encoding]::Default, 4096)
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
Run Code Online (Sandbox Code Playgroud)
我查看了MSDN文档StreamWriter构造函数(Stream,Encoding,Int32),它有一个带有三个参数的重载.
有谁知道如何实例化指定编码的System.IO.StreamWriter?
谢谢,
我刚开始玩特定领域的工具开发,而且我正在使用Visual Studio SDK DSL Tools.但是,我听说微软还有另一项针对特定领域开发的计划,称为"奥斯陆".
我的印象是DSL Tools专注于图形领域特定语言,而Oslo专注于文本语言,但我不确定.
有人可能会指出"DSL Tools"和"Oslo"之间的区别是什么?