Chan Chan - 25 days ago 8
C# Question

How to debug a project with Output Type of Class Library in Visual Studio?

I ran into a problem that I need to debug inside a method of class library project? But I received an project errors said "A project with an Output Type of Class Library cannot be started directly"?
Is there a way to work around this? My project is a user control.

[XRDesigner("Rapattoni.ControlLibrary.CCMLThreePicGalleryTableDesigner," + "Rapattoni.ControlLibrary")]
public class CCMLThreePicGalleryCtrl : XRTable
{
#region Variables
const int cTableWidth = 825;
#endregion

#region Properties
/// <summary>
/// Get\Set bindable variables
/// </summary>

[Bindable( true ), DesignerSerializationVisibility( DesignerSerializationVisibility.Hidden )]
public string SerialPicUrlString
{
get
{
return String.Empty;
}
set
{
SetPictures( value );
}
}

private int CellWidth
{
get;
set;
}

private int CellHeight
{
get;
set;
}

private int PicHeight
{
get;
set;
}

private int PicWidth
{
get; set;
}

private int MaximumPictures
{
get; set;
}
#endregion Properties


#region Events

#endregion

#region Public/Private Methods

private void SetPictures( string urlString )
{
CellWidth = 275;
CellHeight = 130;
PicWidth = 175;
PicHeight = 120;
//CommentCellWidth = "150";
MaximumPictures = 12;

this.Rows.Clear();
this.BeginInit();

string[] urls = urlString.Split( ';' );

XRPictureBox picBox;
XRTableRow row;
CCMLThreePicGalleryCell cell; //, CommentCell;

// Prepare first Row
row = new XRTableRow();
row.Height = CellHeight;
row.CanShrink = false;

int picTotal = urls.Length;
/*
if (picTotal % 3 == 1) // Don't have one picture in a row
picTotal--;
*/
if (picTotal > MaximumPictures) // Max of 12 pictures shown
picTotal = MaximumPictures;
else if (picTotal == 1)
picTotal = 0;

// Keep track of which picture
int picCount = 0;
// Go through each picture and assign to a cell
for (int i = 0; i < picTotal; i++)
{
if (urls[i] != "")
{

if (picCount % 3 == 0 && picCount > 0 ) // Make a new row after every 3rd picture
{
// Create a new row for pictures
row = new XRTableRow();
row.Height = CellHeight;
row.CanShrink = false;
}


cell = new CCMLThreePicGalleryCell();
cell.Size = new Size(CellWidth, CellHeight);
cell.CanShrink = false;
cell.Padding = new PaddingInfo(0, 0, 5, 5);


//CommentCell = new ThreePicGalleryCell(); // Don't want Comments

string[] url_comment = urls[i].Split('|');
picBox = new XRPictureBox();
//picBox.HtmlItemCreated += new HtmlEventHandler(picBox_HtmlItemCreated);
picBox.Sizing = ImageSizeMode.ZoomImage;
url_comment[0] = url_comment[0].Trim();
picBox.ImageUrl = url_comment[0];
picBox.Size = new Size(PicWidth, PicHeight);

cell.Controls.Add(picBox);

row.Cells.Add(cell);

if (picCount % 3 == 0) // Add Finalized row
{
this.Rows.Add(row); // Add current row

}
picCount++;
}
}
// Fix for odd bug where final picture is out
// of alignment if it is 2nd in the last row
if (picCount % 3 == 2)
{
cell = new CCMLThreePicGalleryCell();
cell.Size = new Size(CellWidth, CellHeight);
row.Cells.Add(cell);
this.Rows.Add(row);
}
else if (picCount % 3 == 1) // When last row has 1 picture
{
this.Rows.Remove(row);
}


if (urlString.Equals(string.Empty))
this.Rows.Clear();

this.EndInit();

}

#endregion
}

Answer

Typically I'd create a separate unit test class library project, and then start that in whatever your favourite unit test runner is, and debug that way.

Alternatively, start debugging whatever application would actually use your class library, exercise functionality which will hit whatever breakpoint you want to set, and go on from there.