4

私はそのように試みられました:

using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Trace;

namespace SqlProfiller
{
    public partial class Form1 : Form
    {
        TraceServer reader = new TraceServer();
        SqlConnectionInfo connInfo = new SqlConnectionInfo();

        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            connInfo.ServerName = @".\SQLR2";
            connInfo.DatabaseName = "DB";
            connInfo.UserName = "sa";
            connInfo.Password = "123";

            reader.InitializeAsReader(connInfo, @"Standard.tdf");


            while (reader.Read())
            {
                Console.WriteLine("SPID  : " + reader["SPID"]);
                Console.WriteLine("Login : " + reader["SessionLoginName"]);
                Console.WriteLine("Object: " + reader["ObjectName"]);
                Console.WriteLine("Text  : " + reader["TextData"]);
                Console.WriteLine();

                textBox1.Text += "Event : " + reader["EventClass"] + Environment.NewLine;
                textBox1.Text += "SPID  : " + reader["SPID"] + Environment.NewLine;
                textBox1.Text += "Login : " + reader["SessionLoginName"] + Environment.NewLine;
                textBox1.Text += "Object: " + reader["ObjectName"] + Environment.NewLine;
                textBox1.Text += "Text  : " + reader["TextData"] + Environment.NewLine;
                textBox1.Text += "----------------------------------------------------------";
                textBox1.Text += Environment.NewLine;
                Application.DoEvents();
            }
        }
    }
}

エラー:

Microsoft.SqlServer.Management.Trace.SqlTraceException:オブジェクトをリーダーとして初期化できませんでした。---> System.IO.FileLoadException:混合モードアセンブリは、ランタイムのバージョン'v2.0.50727'に対して構築されており、追加の構成情報がないと4.0ランタイムにロードできません。

オブジェクトをリーダーとして初期化できませんでした。

これは何を意味するのでしょうか?

前もって感謝します

4

2 に答える 2

5

What does this mean?

System.IO.FileLoadException: Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

これは、.NET 4プロセスとして実行されているプロセスと、ロードしているアセンブリが.NET 2でコンパイルされていることを意味します(Microsoft.SqlServer.Management)。

アプリケーションを再コンパイルして.NET2を使用するか、構成に.NET4のヒントを追加して.NET2アセンブリを許可します。

于 2012-08-16T12:46:57.243 に答える
3

コードを実行している場合(Microsoft SQL Server2008に対して.NETFrameworkv4.5を使用してVS2013でビルドすると、次のエラーが発生します。

オブジェクトをリーダーとして初期化できませんでした。混合モードアセンブリは、ランタイムのバージョン「v2.0.50727」に対して構築されており、追加の構成情報がないと4.0ランタイムにロードできません。

VSプロジェクトのApp.configをデフォルトから変更することで修正できます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

これに(少し追加)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup  useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

さらに、[ソリューション]->[アセンブリの追加]->[参照]を使用してアセンブリを追加したとき、以下のパスで「110」ではなく「100」フォルダーを使用しました。

C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.ConnectionInfoExtended.dll

しかし、110でも動作する可能性があります。

このソリューションがお役に立てば幸いです。

于 2014-02-25T09:44:38.133 に答える