我遇到了一个需要在类库项目方法中调试的问题?但我收到一个项目错误说“一个类型库输出类型的项目无法直接启动”? 有办法解决这个问题吗?我的项目是用户控件。
[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
}
答案 0 :(得分:4)
通常我会创建一个单独的单元测试类库项目,然后在你最喜欢的单元测试运行器中启动那个,并以这种方式进行调试。
或者,开始调试实际上使用你的类库的任何应用程序,运行将触及你想要设置的任何断点的功能,并从那里继续。
答案 1 :(得分:3)
设置第二个小项目以使用该库。
答案 2 :(得分:1)
将Visual Studio调试器附加到运行二进制文件的进程。
答案 3 :(得分:0)
我同意Jon Skeet。 TDD(测试驱动开发)是面向服务或业务逻辑的类的最佳方式。
它允许您启动GUI的一小部分并在不加载整个应用程序的情况下对其进行测试。