小编Gra*_*ICA的帖子

Visual Studio构建失败:无法将exe文件从obj\debug复制到bin\debug

更新: 可以在Microsoft Connect中找到重现此错误的示例项目.我还测试并验证了下面接受的答案中给出的解决方案适用于该示例项目.如果此解决方案不适合您,您可能遇到了另一个问题(属于另一个问题).


这是一个之前提出的问题,无论是Stack Overflow还是其他地方,但我发现的这些建议都没有帮助我,所以我只想尝试一个新问题.

场景:我有一个简单的Windows窗体应用程序(C#,.NET 4.0,Visual Studio 2010).它有大多数其他形式继承的基本形式,它使用Entity Framework(和POCO类)进行数据库访问.没什么好看的,没有多线程或任何东西.

问题:一切都很好.然后,当我即将启动应用程序时,Visual Studio无法构建.我收到警告"无法删除文件'... bin\Debug\[ProjectName] .exe'.访问路径'... bin\Debug\[ProjectName] .exe'被拒绝." 和错误"无法将文件'obj\x86\Debug\[ProjectName] .exe'复制到'bin\Debug\[ProjectName] .exe'.进程无法访问文件'bin\Debug\[ProjectName] .exe "因为它被另一个进程使用了​​." (我在运行Rebuild时得到警告和错误,但只运行Build时出错 - 不认为这是相关的吗?)

我完全理解警告和错误消息的内容:Visual Studio显然试图覆盖exe文件,同时由于某种原因它同时锁定它.但是,这并没有帮助我找到问题的解决方案......我发现唯一有效的方法是关闭Visual Studio并重新启动它.然后构建和启动工作,直到我在某些表单中进行更改,然后我再次遇到相同的问题并且必须重新启动...非常令人沮丧!

正如我上面提到的,这似乎是一个已知的问题,所以有很多建议的解决方案.我将列出我在这里尝试过的内容,以便人们知道要跳过的内容:

  • 创建一个新的干净解决方案,只需从旧解决方案中复制文件.
  • 将以下内容添加到项目的预构建事件中:

    if exist "$(TargetPath).locked" del "$(TargetPath).locked"
       if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
    
    Run Code Online (Sandbox Code Playgroud)
  • 将以下内容添加到项目属性(.csproj文件):

    <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
    
    Run Code Online (Sandbox Code Playgroud)

但是,他们都没有为我工作,所以你可能会明白为什么我开始有点沮丧.我不知道在哪里可以看,所以我希望有人能给我一些东西!这是VS中的一个错误,如果是这样的补丁?或者我做错了什么,我有一个循环引用或类似的,如果是这样我怎么能找到?

任何建议都非常感谢:)

更新:如在下面评论中提及,我也使用Process Explorer的,它实际上检查 Visual Studio中被锁定的文件.

.net c# visual-studio winforms

190
推荐指数
8
解决办法
16万
查看次数

"在使用ItemsSource之前,项目集合必须为空."

我正在尝试将图像显示在WPF ListView中,其风格类似于WrapPanel,如旧的ATC Avalon团队文章中所述:如何创建自定义视图.

WPF ListView WrapPanel图像

当我尝试使用LINQ-to-Entities查询的ADO.NET Entity Framework对象集合填充ListView时,我得到以下异常:

例外

在使用ItemsSource之前,项集合必须为空.

我的代码......

Visual Basic

Private Sub Window1_Loaded(...) Handles MyBase.Loaded
    ListViewImages.ItemsSource = From g In db.Graphic _
                                 Order By g.DateAdded Ascending _
                                 Select g
End Sub
Run Code Online (Sandbox Code Playgroud)

XAML

<ListView Name="ListViewImages"
          SelectionMode="Single"
          ItemsSource="{Binding}">
    <local:ImageView />
</ListView>
Run Code Online (Sandbox Code Playgroud)

我在那条线上放了一个断点. ListViewImages.ItemsSourceNothing刚刚LINQ分配之前.

.net vb.net wpf binding entity-framework

162
推荐指数
9
解决办法
14万
查看次数

95
推荐指数
7
解决办法
4万
查看次数

无法对空引用执行运行时绑定,但它不是空引用

使用:MVC 4,ASP.NET Razor

我收到的错误看起来应该是不可能的.它告诉我,我正在使用空引用,状态,但很明显它正在被设置.

控制器:

public ActionResult Index()
{
    Dictionary<int, string> states = new Dictionary<int, string>()
    {
        { -1, "a"},
        { 0, "b"},
        { 1, "c"},
        { 2, "d"},
    };

    //assigning states
    ViewBag.States = states;

    foreach (KeyValuePair<int, string> de in ViewBag.States)
    {
        Debug.WriteLine(de.Key);
    }
    return View();
}
Run Code Online (Sandbox Code Playgroud)

风景:

<div class="search-input">
    <select>
        @foreach (KeyValuePair<int, string> de in ViewBag.States)
        {
            <option value="@de.Key">@de.Value</option>
        }
    </select>
</div>
Run Code Online (Sandbox Code Playgroud)

错误:

Cannot perform runtime binding on a null reference
Line 54: @foreach (KeyValuePair<int, string> de in ViewBag.States)
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc razor

67
推荐指数
5
解决办法
11万
查看次数

是否可以在不阻止所有表单的情况下使用ShowDialog?

我希望我能够清楚地解释清楚.我有我的主表单(A),它使用form.Show()打开1个子表单(B),使用form.Show()打开第二个子表单(C).现在我希望子窗体B使用form.ShowDialog()打开一个窗体(D).当我这样做时,它会阻止形式A和C形式.有没有办法打开一个模态对话框,只有它阻止打开它的表单?

c# showdialog winforms

48
推荐指数
6
解决办法
6万
查看次数

我应该不断打开()并关闭()我的SQL数据库还是让它保持打开状态?

我正在创建一个使用SQL数据库存储数据的应用程序.应用程序的设计方式将根据应用程序运行时的用户操作,每隔3分钟左右更新一次新数据.

在我看过的教程中,他们建议您在更改后关闭数据库(就资源而言,这是一个"昂贵的").

它是更好地离开它打开我的应用程序的时间,因为它是被相当频繁地更新,或者我应该每次更改后立即运行close()方法?

我想我的担心是打开它并不断关闭它会吸引更多的资源,而不是让它一直打开.

sql database android database-connection

25
推荐指数
1
解决办法
7956
查看次数

在visual studio中重建app.config?

我的app.config给了我几条与"找不到usersettings schema"有关的消息,所以我删除它是为了从头开始构建它,但我没有成功.如何根据我的设置文件构建一个新的?每当我创建一个新的并构建解决方案时,它都不会构建应用程序配置文件.我不知道还有什么可以尝试的.

这是我旧文件的麻烦部分:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
<userSettings>
    <DelocksNote.Settings1>
        <setting name="Font" serializeAs="String">
            <value>DejaVu Sans, 20.25pt, style=Italic</value>
        </setting>
        <setting name="WordWrap" serializeAs="String">
            <value>False</value>
        </setting>
    </DelocksNote.Settings1>
</userSettings>
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio

19
推荐指数
1
解决办法
2万
查看次数

在声明之前不能使用局部变量

我正在尝试创建一个函数,但我收到一条错误消息.

public int[] genericSearch(int searchWidth, int startingRadius, int width, int height, Bitmap bitmap)
{
    //Generic function for finding the best path from a certain range
    if (startingRadius == -1)
        startingRadius = bitmap.Height() / 2;
Run Code Online (Sandbox Code Playgroud)

在声明之前不能使用局部变量'startingRadius'.

同样的问题也出现在位图变量中.通常在c ++中这种类型的声明会起作用; 但是,我不确定为什么它不在这里工作.

c# parameters scope function

19
推荐指数
1
解决办法
3万
查看次数

如何在外部浏览器中打开webBrowser控件中的链接?

我的Windows窗体应用程序中有一个textBox和一个webBrowser控件.每当用户在textBox中输入HTML代码时,webBrowser控件都会显示其编译的表单.这个代码:

private void textBox2_TextChanged(object sender, EventArgs e)
{
    webBrowser1.DocumentText = textBox2.Text;
}
Run Code Online (Sandbox Code Playgroud)

但是每当我单击webBrowser控件中的链接时,它都会在同一个webBrowser控件中打开它.我想要的是它应该在系统的默认Web浏览器中打开.那么这个处理链接点击的webBrowser控件有什么事件吗?

.net c# webbrowser-control winforms

18
推荐指数
3
解决办法
2万
查看次数

如何按列名设置DataGridViewRow的Cell值?

在Windows窗体中,我试图DataGridView通过插入DataGridViewRows来手动填充,所以我的代码如下所示:

DataGridViewRow row = new DataGridViewRow();
row.CreateCells(dgvArticles);
row.Cells[0].Value = product.Id;
row.Cells[1].Value = product.Description;
.
.
.
dgvArticles.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

但是,我想按列名添加Cell值,而不是通过索引来添加它,如下所示:

row.Cells["code"].Value = product.Id;
row.Cells["description"].Value = product.Description;
Run Code Online (Sandbox Code Playgroud)

但这样做会抛出一个错误,说它无法找到名为"code"的列.我正在设计器中设置DataGridView列,如下所示: DataGridViewDesigner中的列

难道我做错了什么?我怎样才能完成我想做的事情?

c# datagridview winforms datagridviewrow

16
推荐指数
1
解决办法
5万
查看次数