我刚刚在我们公司的Visual Studio项目中引入了SVN,并创建了一个看起来像这样的存储库("解决方案"是Visual Studio解决方案,包含1..n个项目):
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
Run Code Online (Sandbox Code Playgroud)
现在,我有两个选项来构建本地工作目录:
选项A:让用户使用AnkhSVN单独检出每个解决方案,从而产生如下结构:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/solution3/projectD/...
/solution4/projectE/...
/projectF/...
Run Code Online (Sandbox Code Playgroud)
或者,如果我告诉用户手动创建customerX子目录:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
/customerX/solution4/projectE/...
/projectF/...
Run Code Online (Sandbox Code Playgroud)
优点:用户只能查看他真正需要的解决方案.缺点:每个解决方案都需要单独检出/更新.
选项B:告诉用户使用TortoiseSVN签出整个存储库,导致结构与存储库完全相同:
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
Run Code Online (Sandbox Code Playgroud)
优点:"svn更新所有内容"非常容易.缺点:用户还拥有所有分支和标签的本地副本.
问题:由于某些项目是在解决方案之间共享的(比方说,例如,projectA是一个也被解决方案3使用的库),我们需要修复一个目录结构,以确保解决方案文件中的相对路径是正确的.你推荐哪个选项?为什么?
编辑:感谢您的所有优秀答案,特别是提及svn:externals和强调良好的存储库设计的重要性.我最终更新了我的存储库结构:
/trunk/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
-svn:external to projectA
/solution4/projectE/...
/projectF/...
Run Code Online (Sandbox Code Playgroud)
这确保了在解决方案3上工作的开发人员只需要检查解决方案3(而不是解决方案1),并且可以将解决方案签出到任何目录,即工作目录不需要固定的结构.
我正在尝试编写两个函数escape(text, delimiter)并unescape(text, delimiter)具有以下属性:
结果escape不包含delimiter.
unescape是相反的escape,即
unescape(escape(text, delimiter), delimiter) == text
Run Code Online (Sandbox Code Playgroud)
对于所有值text和delimiter
可以限制允许的值delimiter.
背景:我想创建一个分隔符分隔的值字符串.为了能够再次从字符串中提取相同的列表,我必须确保单独的字符串不包含分隔符.
我尝试了什么:我想出了一个简单的解决方案(伪代码):
escape(text, delimiter): return text.Replace("\", "\\").Replace(delimiter, "\d")
unescape(text, delimiter): return text.Replace("\d", delimiter).Replace("\\", "\")
Run Code Online (Sandbox Code Playgroud)
但发现测试字符串上的属性2失败了"\d<delimiter>".目前,我有以下工作方案
escape(text, delimiter): return text.Replace("\", "\b").Replace(delimiter, "\d")
unescape(text, delimiter): return text.Replace("\d", delimiter).Replace("\b", "\")
Run Code Online (Sandbox Code Playgroud)
这似乎有用,只要delimiter不是\,b或d(这很好,我不想用那些作为分隔符).但是,由于我还没有正式证明其正确性,我担心我错过了其中一个属性被违反的情况.由于这是一个常见的问题,我认为已经存在一个"众所周知的证明正确"的算法,因此我的问题(见标题).
我有页面A和页面B.您可以在页面A中执行以下操作:
Response.Redirect.现在问题如下:
会发生什么:网页A 的初始状态 显示.
我想要发生的事情:显示最终状态的页面A (即,在列表框中选择"正确"项目).
我知道ScriptManager.AddHistoryPoint!据我所知,它并没有解决我的问题:
AddHistoryPoint 每次在第A页上完成某些操作时我都可以打电话.这很糟糕,因为它会在浏览器历史记录中包含大量条目.(每次选择不同的列表框项时都会有一个新条目.)但这正是我想通过使用UpdatePanel来避免的!当然,如果有一种ReplaceLastHistoryPoint方法,那将是完美的,但我没有找到一个......
我试图在AddHistoryPoint之前调用Response.Redirect,只保存页面A 的最后一个状态,但是,唉,这不起作用(没有保存历史记录点).考虑到Response.Redirect工作原理,这并不奇怪.
我错过了一些解决方案吗?我正在使用.NET 3.5SP1,以防万一.
当您尝试在XAML中构建一个Visual Studio时,Visual Studio会显示错误,这是一个众所周知的错误FixedDocument.例如,以下代码段
<DocumentViewer>
<FixedDocument>
<PageContent>
<FixedPage Width="21.0cm" Height="29.7cm">
<TextBlock>Hello World!</TextBlock>
</FixedPage>
</PageContent>
</FixedDocument>
</DocumentViewer>
Run Code Online (Sandbox Code Playgroud)
编译并运行完美,但Visual Studio在错误列表中显示错误(Property 'Pages' does not support values of type 'PageContent'.)这很烦人.
我正在寻找一种解决方案,允许我在Visual Studio中的XAML文件中构建我的文档,而不会收到该错误消息.我找到了一个解决方法,我想在下面分享作为答案,但我很好奇是否有一个更好(更优雅)的解决方案.
我理解try-catch如何工作以及try-finally如何工作,但我发现自己在两个完全不同的场景中使用它们(通常):
using在C#和VB中)主要用于某些中型代码块,它使用一些需要正确处理的资源.根据我的经验,try-catch-finally最合适的情况,即我想要捕获某个特定异常的块与我使用某些可处理资源的块完全相同,这种情况极为罕见.然而,C#,VB和Java的语言设计者似乎认为这是一个非常常见的场景; VB的设计师甚至考虑增加捕捉到using.
我错过了什么吗?或者我是否因为限制性地使用try-catch而过于迂腐?
编辑:澄清:我的代码通常看起来像这样(为清晰起见,函数展开):
Try
do something
Aquire Resource (e.g. get DB connection)
Try
do something
Try
do something that can fail
Catch SomeException
handle expected error
do something else...
Finally
Close Resource (e.g. close DB connection)
do something
Catch all
handle unexpected errors
Run Code Online (Sandbox Code Playgroud)
这似乎比将两个捕获中的任何一个放在同一水平上更有意义,最后只是为了避免缩进.
我们的应用程序使用XML配置文件.我认为用我们的应用程序分发一些XML编辑器会很好,这样用户就可以方便地编辑配置文件.功能应该是:
有谁知道这样的编辑?
我读过有关Visual Studio 2010 Professional的Report Viewer组件的谣言,可以将数据库中的HTML呈现为报表.不幸的是,我无法在网上找到明确的信息,我宁愿不购买升级只是为了尝试一下.
任何人都可以确认或否认此功能存在,最好是引用可靠的来源(例如VS 2010文档)?
(编辑)澄清:我说的是Visual Studio,而不是SQL Server.我知道SSRS 2008和SSRS 2010支持呈现HTML.我也知道Visual Studio和SQL Server使用相同的库来呈现报告.这就是为什么我认为可以在Visual Studio 2010客户端("本地处理")RDLC报告中呈现HTML 的原因.我只是希望有人确认这一点:我可以使用Visual Studio 2010的ReportViewer组件呈现HTML吗?
将Spinner添加到GridLayout似乎"打破"了布局.我准备了一个最小的工作示例来说明问题:
我想要一个左边是标签的网格,右边是输入控件.右边的控件应占用剩余空间.这是一个简单的例子:

用旋转器替换其中一个输入控件会导致右列延伸到屏幕边界之外,从而导致布局难看.

为什么会发生这种情况,我该如何避免呢?
这是第一个例子的代码:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2" >
<TextView
android:layout_gravity="left"
android:text="TextView" />
<EditText
android:layout_gravity="fill_horizontal"
android:hint="EditText" />
<TextView
android:layout_gravity="left"
android:text="TextView" />
<EditText
android:layout_gravity="fill_horizontal"
android:hint="EditText" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
这是第二张图片的代码.唯一的区别是第一个EditText已被Spinner取代:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2" >
<TextView
android:layout_gravity="left"
android:text="TextView" />
<Spinner
android:id="@+id/spinner1"
android:layout_gravity="fill_horizontal" />
<TextView
android:layout_gravity="left"
android:text="TextView" />
<EditText
android:layout_gravity="fill_horizontal"
android:hint="EditText" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud) 我想编写C#代码的等效Java代码.
我的C#代码如下:
public abstract class A<T> where T : A<T>, new()
{
public static void Process()
{
Process(new T());
}
public static void Process(T t)
{
// Do Something...
}
}
public class B : A<B>
{
}
public class C : A<C>
{
}
Run Code Online (Sandbox Code Playgroud)
Java代码与我的代码相似.
public abstract class A<T extends A<T>>
{
public static <T extends A<T>> void process()
{
process(new T()); // Error: Cannot instantiate the type T
}
public static <T extends A<T>> void process(T t)
{ …Run Code Online (Sandbox Code Playgroud) 在我们的代码中,有一个以下形式的正则表达式:
string regex = @"(?i)foo=(BAR?-[A-Z]+(33|34)?)";
Run Code Online (Sandbox Code Playgroud)
(?i)正则表达式开头的" "匹配/做什么?我查看了.NET正则表达式文档,似乎无法弄清楚(?i)意味着什么.谢谢!
c# ×4
.net ×3
java ×2
algorithm ×1
android ×1
asp.net ×1
asp.net-ajax ×1
escaping ×1
generics ×1
html ×1
inheritance ×1
layout ×1
rdlc ×1
regex ×1
svn ×1
text-editor ×1
updatepanel ×1
vb.net ×1
wpf ×1
xml ×1
xml-editor ×1
xsd ×1