c# – 无法从VS2010进行调试
我正在尝试编译下面的代码,但现在无法调试.任何的想法 ?
using System; using System.Collections.Generic; using Microsoft.AnalysisServices; using System.Runtime.Serialization; namespace SqlBi.Tools { /// <summary> /// MdxScriptUpdater handles the manage of custom /// MDX statements into an existing cube /// Use in this way: /// 1 - Create a MdxScriptUpdater instance specifying a server name /// 2 - Add MDX statements you want to put into the cube adding strings to MdxCommands collection /// 3 - Call Update method passing the name of database and cube - you have to use object IDs instead of displayed names! /// </summary> public class MdxScriptUpdater : IDisposable { /// <summary> /// Type of update /// </summary> public enum UpdateType { /// <summary> /// Delete existing commands and insert the new ones /// </summary> DeleteAndInsert,/// <summary> /// Only delete existing commands /// </summary> DeleteOnly,/// <summary> /// Only insert new commands (be careful,you can create duplicates!) /// </summary> InsertOnly }; private string _marker = "/* AUTO-GENERATED */"; private Server _serverConnection = null; private bool _ownedServer = false; private List<string> _mdxCommands; /// <summary> /// Marker is a comment that is put in front of the MDX statement to recognize managed MDX statements /// </summary> public string Marker { get { return this._marker; } set { this._marker = value; } } /// <summary> /// This is the connection to the server. /// It is auto generated by the constructor but you can use your own connection,if you want /// </summary> public Server ServerConnection { get { return this._serverConnection; } set { if (this._serverConnection != null && _ownedServer) { try { this.Dispose(); } finally { _ownedServer = false; } } this.ServerConnection = value; _ownedServer = true; } } /// <summary> /// List of Mdx statements to add/update into the cube /// Populate the list before calling the Update(...) method /// </summary> public List<string> MdxCommands { get { return this._mdxCommands; } set { this._mdxCommands = value; } } /// <summary> /// Default constructor - connection is not defined /// </summary> public MdxScriptUpdater() { this._mdxCommands = new List<string>(); } /// <summary> /// Constructor that connects to the specified server /// </summary> /// <param name="serverName">Name of the Analsys Services server instance (SERVERNAME or SERVERNAMEINSTANCE)</param> public MdxScriptUpdater( string serverName ) : this() { this._serverConnection = new Server(); this.ServerConnection.Connect( serverName ); } /// <summary> /// Apply updates to the specified cube /// Deletes existing managed Mdx commands and insert the ones in MdxCommands string collection /// </summary> /// <param name="databaseName">Name (ID) of the Database</param> /// <param name="cubeName">Name (ID) of the Cube</param> public void Update( string databaseName,string cubeName ) { Update( databaseName,cubeName,UpdateType.DeleteAndInsert ); } /// <summary> /// Apply updates to the specified cube /// </summary> /// <param name="databaseName">Name (ID) of the Database</param> /// <param name="cubeName">Name (ID) of the Cube</param> /// <param name="updateType">Type of update</param> public void Update( string databaseName,string cubeName,UpdateType updateType ) { Database db = ServerConnection.Databases[databaseName]; Cube cube = db.Cubes[cubeName]; Update( cube,updateType ); } /// <summary> /// Apply updates to the specified cube /// </summary> /// <param name="cube">Cube object</param> public void Update( Cube cube ) { Update( cube,UpdateType.DeleteAndInsert ); } /// <summary> /// Apply updates to the specified cube /// </summary> /// <param name="cube">Cube object</param> /// <param name="updateType">Type of update</param> public void Update( Cube cube,UpdateType updateType ) { // Look for the default MDX Script object foreach( MdxScript script in cube.MdxScripts) { if (script.DefaultScript) { Update( script,updateType ); cube.Update(); return; } } throw new MdxScriptUpdaterException( "Default script not found" ); } /// <summary> /// Update an MdxScript /// Deletes existing managed Mdx commands and insert the ones in MdxCommands string collection /// </summary> /// <param name="script">MdxScript to update</param> /// <param name="updateType">Type of update</param> public void Update( MdxScript script,UpdateType updateType ) { if (updateType == UpdateType.DeleteAndInsert || updateType == UpdateType.DeleteOnly) { DeleteMarkedCommands( script ); } if (updateType == UpdateType.DeleteAndInsert || updateType == UpdateType.InsertOnly) { InsertMarkedCommands( script ); } script.Update(); } /// <summary> /// Deletes existing managed Mdx commands using default Marker comment string /// </summary> /// <param name="script">MdxScript to update</param> public void DeleteMarkedCommands( MdxScript script ) { DeleteMarkedCommands( script,Marker ); } /// <summary> /// Deletes existing managed Mdx commands using a custom Marker comment string /// </summary> /// <param name="script">MdxScript to update</param> /// <param name="marker">Custom marker comment string</param> public static void DeleteMarkedCommands( MdxScript script,string marker ) { for( int i = script.Commands.Count - 1; i >= 0; i-- ) { if (script.Commands[i].Text.Contains( marker )) { script.Commands.RemoveAt( i ); } } } /// <summary> /// Insert managed commands of MdxCommands string collection /// </summary> /// <param name="script">MdxScript to update</param> public void InsertMarkedCommands( MdxScript script ) { InsertMarkedCommands( script,this.MdxCommands,Marker ); } /// <summary> /// Insert managed commands of a custom string collection /// </summary> /// <param name="script">MdxScript to update</param> /// <param name="commands">Custom string collection of Mdx commands to insert</param> public void InsertMarkedCommands( MdxScript script,IEnumerable<string> commands ) { InsertMarkedCommands( script,commands,Marker ); } /// <summary> /// Insert managed commands of MdxCommands string collection using a custom Marker comment string /// </summary> /// <param name="script">MdxScript to update</param> /// <param name="marker">Custom marker comment string</param> public void InsertMarkedCommands( MdxScript script,string marker ) { InsertMarkedCommands( script,marker ); } /// <summary> /// Insert managed commands of a string collection using a custom Marker comment string /// </summary> /// <param name="script">MdxScript to update</param> /// <param name="commands">Custom string collection of Mdx commands to insert</param> /// <param name="marker">Custom marker comment string</param> public static void InsertMarkedCommands( MdxScript script,IEnumerable<string> commands,string marker ) { foreach( string mdxCommand in commands ) { Command cmd = new Command(); cmd.Text = marker + mdxCommand; script.Commands.Add( cmd ); } } #region IDisposable Members public void Dispose() { if (this.ServerConnection != null && _ownedServer) { this.ServerConnection.Disconnect(); this.ServerConnection.Dispose(); } // Write directly to private member,skip the property setter this._serverConnection = null; } #endregion } public class MdxScriptUpdaterException : Exception { public MdxScriptUpdaterException() : base() {} public MdxScriptUpdaterException( string message ) : base( message ) {} public MdxScriptUpdaterException( string message,Exception innerException ) : base( message,innerException ) {} protected MdxScriptUpdaterException( SerializationInfo info,StreamingContext context ) : base( info,context ) {} } } Program.cs中 using System; using System.Collections.Generic; using System.Text; using SqlBi.Tools; using System.IO; namespace SqlBi.Tools { class DemoMdxScriptUpdater { static void Main( string[] args ) { Demo(); } static void Demo() { MdxScriptUpdater updater = new MdxScriptUpdater("test"); string ScriptMdx = File.ReadAllText(@"D:ScriptMdx.txt"); //Console.WriteLine("--- Contents of file.txt: ---"); //Console.WriteLine(ScriptMdx); updater.MdxCommands.Add(ScriptMdx); updater.Update("BI","BI1"); } } }
解决方法
我打算采取行动,而不是在工具中以某种方式禁用“仅我的代码”复选框 – >选项 – >调试器
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |